ID: 15673
Updated by: [EMAIL PROTECTED]
-Summary: Quotes crash MySQL queries: $array['val'] = Parse
Error, but $array[val] works
Reported By: [EMAIL PROTECTED]
Status: Analyzed
Bug Type: Arrays related
Operating System: Linux 2.4.5
PHP Version: 4.1.1
New Comment:
Work's right with CVS:
$ php
<?
error_reporting(E_ALL);
$foo['key'] = 'value';
echo $foo[key];
?>
X-Powered-By: PHP/4.2.0-dev
Content-type: text/html
<br />
<b>Warning</b>: Use of undefined constant key - assumed 'key' in
<b>-</b> on line <b>4</b><br />
-(4) : Warning - Use of undefined constant key - assumed 'key'
Previous Comments:
------------------------------------------------------------------------
[2002-02-22 07:52:32] [EMAIL PROTECTED]
I did this tests using error_reporting(E_ALL);
Thats my point, the correct array syntax according the doc:
http://www.php.net/manual/en/language.types.array.php
is to call $array['value'] even thought $array[value] will work, but in
the later case it should send a NOTICE warning.
well, try this in you system:
error_reporting(E_ALL);
$arr = array( 'foo' => 'bar', 'etc' => 'other');
//This will make a Parse Error in PHP 4.1.1:
//echo "Foo value is $arr['foo']";
//This works:
echo "Foo value is ".$arr['foo'];
echo "Foo value is {$arr['foo']}";
//This will work but WON'T send a warning as the doc says:
echo "Foo value is $arr[foo]";
// This will get a parse error
echo "Foo value is $arr['foo']";
------------------------------------------------------------------------
[2002-02-22 07:40:57] [EMAIL PROTECTED]
Yes, I get you get a NOTICE warning when you use $array[key] (because
key will be an undefined constant and therefore evaluate to a string).
Try with error_reporting(E_ALL); before using this syntax.
------------------------------------------------------------------------
[2002-02-22 07:25:35] [EMAIL PROTECTED]
Hey man WOW, Im impressed, you have already replied!!!
Yes, this solution works:
$query = "SELECT * from {$table['users']}";
But shouldn't "Blah $table['users']" work as well?
Shouldn't PHP at least send a warning when using "$table[users]" even
if the other "$arr['foo']" syntaxes where wrong?
Thanks!
------------------------------------------------------------------------
[2002-02-22 07:17:21] [EMAIL PROTECTED]
Use the {$array['key']} syntax as I told you.
However, I can't remember if "foo $array['bar']" ever worked or not
right now. Someone else?
------------------------------------------------------------------------
[2002-02-22 07:12:54] [EMAIL PROTECTED]
It seems we cannot use the correct syntax $table['users'] inside the
two ""...
This will work:
$result = mysql_query("SELECT * from ".$table['users']);
This wont work:
$result = mysql_query("SELECT * from $table['users']");
This will, but should send a warning and it isnt:
$result = mysql_query("SELECT * from $table[users]");
The errors happens everywere I call any array with the '' or "" like
$table["something"] or $table['something'] inside ""s...
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/15673
--
Edit this bug report at http://bugs.php.net/?id=15673&edit=1