PHP不解析双引号内的变量

PHP不解析双引号内的变量,php,mysql,parsing,Php,Mysql,Parsing,我有以下疑问: 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) 当我将$id更改为硬编码值(51)时,它会起作用: $sql = "SELECT

我有以下疑问:

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)
当我将$id更改为硬编码值(51)时,它会起作用:

$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."'";

而不是像这样写查询

$sql = "SELECT * FROM table WHERE id=$id";
您也可以使用此选项

$sql = "SELECT * FROM table WHERE id='".$id."'";
请用这个:

SELECT * FROM table WHERE `id` = $id 
在id的两侧插入`

请用这个:

SELECT * FROM table WHERE `id` = $id 
在id的两侧插入`


寄存器\u全局已关闭。我知道安全问题,但我有它自己的虚拟服务器,现在还没有时间来修复它

在htaccess中:

php_flag register_globals on 

寄存器\u全局已关闭。我知道安全问题,但我有它自己的虚拟服务器,现在还没有时间来修复它

在htaccess中:

php_flag register_globals on 

除此之外,查询应该被转义(在本例中,转换为整数就足够了),或者最好通过准备好的语句创建,我猜想是查询失败了


PHP从一开始就解析了双引号字符串,所以请尝试输出
$sql
的值,以查看发送到MySQL的内容。

除此之外,查询应该转义(在这种情况下,转换为整数就足够了),或者最好通过准备好的语句创建,我猜是这个查询失败了


PHP从一开始就解析了双引号字符串,因此请尝试输出
$sql
的值,以查看发送到MySQL的内容。

是否尝试了一些错误处理?使用mysql_error函数是一种选择。似乎没有返回任何错误。PHP版本:PHP5.2该站点是为版本4.something构建的。您如何检查是否返回了错误?另外,您首先是如何获得
$id
的?用户输入,然后清除变量?或者,
$id
从何而来?您确定它包含ASCII 53/49吗?在查询中使用它之前,请尝试将其强制转换为int-首先,查看
var\u dump((int)$id)中的内容
提供给您,然后尝试将查询字符串更改为
$sql=“SELECT*FROM table WHERE id=”((int)$id)是否尝试了一些错误处理?使用mysql_error函数是一种选择。似乎没有返回任何错误。PHP版本:PHP5.2该站点是为版本4.something构建的。您如何检查是否返回了错误?另外,您首先是如何获得
$id
的?用户输入,然后清除变量?或者,
$id
从何而来?您确定它包含ASCII 53/49吗?在查询中使用它之前,请尝试将其强制转换为int-首先,查看
var\u dump((int)$id)中的内容
提供给您,然后尝试将查询字符串更改为
$sql=“SELECT*FROM table WHERE id=”((int)$id)