Mysql 更正UPDATE语句(并使其更安全!)

Mysql 更正UPDATE语句(并使其更安全!),mysql,Mysql,我试图在我的数据库中输入一个值…当我通过控制台运行它时,它工作正常(因为我用数字和文本替换变量)。。但是,当我为book ID插入PHP变量时,我的查询并没有返回它的值。。这是因为这本书没有人读 $query = "UPDATE books " . "SET readstatus='".$readstatus."' " . "WHERE book_id=".$book_id; echo $query 回显的查询状态为: UPDATE books SET read

我试图在我的数据库中输入一个值…当我通过控制台运行它时,它工作正常(因为我用数字和文本替换变量)。。但是,当我为book ID插入PHP变量时,我的查询并没有返回它的值。。这是因为这本书没有人读

$query = "UPDATE books "
       . "SET readstatus='".$readstatus."' "
       . "WHERE book_id=".$book_id;
echo $query
回显的查询状态为:

  UPDATE books SET readstatus='half' WHERE book_id=0
图书ID作为bookstatusupdate.php?图书ID存储在URI中=


就是搞不懂这个

知道错误会有帮助。首先,回显查询:

$query = "UPDATE books "
       . "SET readstatus='".$readstatus."' "
       . "WHERE book_id=".$book_id;
echo $query;
我猜
$book\u id
是未填充的,因此查询失败。您真正应该做的是使用
(int)
强制转换整数,并在
mysqli\u real\u escape\u string()
中包装字符串

如果您试图从URL获取数据,请按如下方式操作:

$book_id = (int) $_GET['book_id'];

$query = "UPDATE books "
        ."SET readstatus='". mysqli_real_escape_string( $readstatus )."' "
        ."WHERE book_id=". (int) $book_id;

echo $query;

知道错误会有帮助。首先,回显查询:

$query = "UPDATE books "
       . "SET readstatus='".$readstatus."' "
       . "WHERE book_id=".$book_id;
echo $query;
我猜
$book\u id
是未填充的,因此查询失败。您真正应该做的是使用
(int)
强制转换整数,并在
mysqli\u real\u escape\u string()
中包装字符串

如果您试图从URL获取数据,请按如下方式操作:

$book_id = (int) $_GET['book_id'];

$query = "UPDATE books "
        ."SET readstatus='". mysqli_real_escape_string( $readstatus )."' "
        ."WHERE book_id=". (int) $book_id;

echo $query;

好的,我这样做了,它给了我一个图书ID“0”,因此它显然不会在任何地方被拾取,但这应该是因为URI包含正在表单中更新的图书ID的ID。有什么想法吗?我可以在URI中使用vlaue并将其设置为图书ID吗?听起来你已经习惯于启用
register\u globals()
-这绝对不应该是这样,这很危险!如果还没有,请在php.ini中禁用它。要从URL获取数据,请使用$\u get['book\u id']-您可以查看使用print\r($\u get);-HTHI已经有了您在编辑的问题中指定的,但仍然没有运气。我不明白,因为ID正在更新页面的URI中成功显示!!URL/URI是什么?您从print\r($\u get)中得到了什么?您可以编辑您的答案以显示这些参数,它将具有更好的格式。好的,我这样做了,它给了我一个图书ID“0”,因此它显然不会在任何地方被拾取,但这应该是因为URI包含在表单中更新的图书ID的ID。有什么想法吗?我可以在URI中使用vlaue并将其设置为图书ID吗?听起来你已经习惯于启用
register\u globals()
-这绝对不应该是这样,这很危险!如果还没有,请在php.ini中禁用它。要从URL获取数据,请使用$\u get['book\u id']-您可以查看使用print\r($\u get);-HTHI已经有了您在编辑的问题中指定的,但仍然没有运气。我不明白,因为ID正在更新页面的URI中成功显示!!URL/URI是什么?您从print\r($\u get)中得到了什么?您可以编辑答案以显示这些参数,这样会有更好的格式。您仍然无法从$\u GET数组(查询字符串)返回正确的值。我已经更新了我的答案,您应该能够复制并粘贴最后的代码块。您仍然无法从$\u GET数组(查询字符串)返回正确的值。我已经更新了我的答案,您应该能够复制并粘贴最后的代码块。