我有以下查询:
var_dump($id); // string '51' (length=2)
$sql = "SELECT * FROM table WHERE id=$id";
$result = mysql_query($sql, $db);
$myrow = mysql_fetch_array($result);
var_dump($myrow) // null (NOT OK)
当我更改硬编码值 (51) 的 $id 时,它起作用了:
$sql = "SELECT * FROM table WHERE id=51";
$result = mysql_query($sql, $db);
$myrow = mysql_fetch_array($result);
var_dump($myrow); // array 0 => string '51' (length=2) (OK)
好像 $sql 没有被正确解析。这是一个非常古老的站点,是否与该站点最初创建时所针对的 PHP 版本有关?
$sql = "SELECT * FROM table WHERE id=".$id;
// ALSO WORKS. But I am not really looking forward to doing a FIND & REPLACE
编辑:
该站点有数百种此类查询。这是我别人开发的旧站点。我想知道是否有 INI 设置或在我可以切换回来的 PHP 版本之间切换的东西。
谢谢
PHP版本:PHP5.2
该站点是为版本 4.something 构建的。
最佳答案
而不是像这样写查询
$sql = "SELECT * FROM table WHERE id=$id";
你也可以使用这个替代方案..
$sql = "SELECT * FROM table WHERE id='".$id."'";
关于PHP 不解析双引号内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9159488/