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

时间:2010-03-17 14:19:19

标签: mysql

我正在尝试在我的数据库中使用单个值...当我通过控制台运行它时,它正常工作(因为我用数字和文本替换变量)..但是,我的查询没有返回我为它插入PHP变量时书本ID的值..这是因为book_id未填充...

$query = "UPDATE books "
       . "SET readstatus='".$readstatus."' "
       . "WHERE book_id=".$book_id;
echo $query

回显的查询说明:

  UPDATE books SET readstatus='half' WHERE book_id=0

图书ID存储在URI中,作为bookstatusupdate.php?book_id =

只是想不出这个!

1 个答案:

答案 0 :(得分:3)

了解错误会有所帮助。首先,回应一下查询:

$query = "UPDATE books "
       . "SET readstatus='".$readstatus."' "
       . "WHERE book_id=".$book_id;
echo $query;

我猜测$book_id未填充,因此查询失败。为了确保安全,您应该做的是使用(int)转换整数并在mysqli_real_escape_string()中包装字符串。

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

如果您尝试从网址获取数据,请执行以下操作:

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

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

echo $query;