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