php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #39657 The extended table-specification "database.table" creates errors
Submitted: 2006-11-28 06:26 UTC Modified: 2006-11-28 09:53 UTC
From: w dot kaiser at fortune dot de Assigned:
Status: Not a bug Package: MySQL related
PHP Version: 4.4.4 OS: XP Pro
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: w dot kaiser at fortune dot de
New email:
PHP Version: OS:

 

 [2006-11-28 06:26 UTC] w dot kaiser at fortune dot de
Description:
------------
The extended table-specification "database.table" im SQL-queries creates errors, if the the "database"-name contains a "-" (dash);

The error is:

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-olc.olc_configuration' at line 1"

A sample statement is "select count(*) from db1021924-olc.olc_configuration"

A connect to the database "db1021924-olc" is possible with PHP, but queries using the the extended table-specifications fail!

As we are using a "multi-db" approach in our application, and the ISP dictates this type of database-name syntax, this is a real show-stopper!

A database-name like "db1021924_olc" (using the underscore instead of the dash) works fine!



Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-11-28 06:29 UTC] w dot kaiser at fortune dot de
Forgot to mention, that MySQL itself can cope with this database-name, so it must bee a PHP-problem!
 [2006-11-28 09:25 UTC] tony2001@php.net
The error message comes from MySQL client, which means it's not PHP problem.
 [2006-11-28 09:30 UTC] w dot kaiser at fortune dot de
No, it is not!

I first reported the bug to the MySQL-group, but they proofed to me, that MySQl handles the situation correctly!

This is what they sent to me:

===============================================

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 5.0.27-community-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database `db1021924-olc`;
Query OK, 1 row affected (0.00 sec)

mysql> use `db1021924-olc`;
Database changed
mysql> create table tb1 (id serial, col2 char(10));
Query OK, 0 rows affected (0.13 sec)

mysql> insert into tb1 (col2) values ("hello")
    -> ;
Query OK, 1 row affected (0.03 sec)

mysql> select * from `db1021924-olc`.tb1;
+----+-------+
| id | col2  |
+----+-------+
|  1 | hello |
+----+-------+
1 row in set (0.00 sec)
 [2006-11-28 09:39 UTC] derick@php.net
select * from `db1021924-olc`.olc_configuration;
vs.
select count(*) from db1021924-olc.olc_configuration;

Do you see the difference? Honestly, you're doing something wrong yourself. It is neither a PHP problem nor a MySQL problem.
 [2006-11-28 09:41 UTC] tony2001@php.net
1) select count(*) from db1021924-olc.olc_configuration
2) select count(*) from `db1021924-olc`.tb1

Don't you see the difference?
 [2006-11-28 09:53 UTC] w dot kaiser at fortune dot de
Thanx for your effort!

The "`" around the table name (`db1021924-olc`) does the trick!
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Dec 27 01:01:28 2024 UTC