【发布时间】:2011-11-04 12:08:23
【问题描述】:
我有一些代码可以更新名为job 的表,但是一旦执行该页面,它就不会更新该表。代码如下:
$item = isset($_POST['item']);
$ref = isset($_POST['ref']);
$con = mysql_connect("$host","$username","$password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("$db_name", $con);
$sql="UPDATE job SET item = '$item' WHERE ref='$ref'";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
header("location:index.php");
我已经回显了$ref 变量,它就在那里,但如果我把它放在 WHERE 子句中,它将不起作用。
【问题讨论】:
-
在执行查询之前
$sql的值是多少?另外,请注意 SQL 注入(在将它们放入查询之前,您可能希望转义$item和$ref)。 -
$ref 变量是什么类型的数据?
-
您意识到 isset() 返回的是布尔值 true/false,而不是参数的实际值?
-
请使用绑定变量以避免严重的SQL注入漏洞!
-
@james $ref 是一个字符串,我可以正确地回显 $ref 的值,但它不会在子句中接受它。