好的,我有这段代码。
<? //process.php, this will be use in updating, adding, deleting items and content
$a = $_POST['hid'];
$b = $_POST['doctitle'];
$c = $_POST['doccontent'];
if (isset($_POST['hid']) && ($_POST['doctitle']) && ($_POST['doccontent']))
{
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("juliver", $con);
mysql_query("UPDATE doc SET title='$b', content='$c' WHERE id='$a'");
echo "<h2>Successfully updated.</h2>";
mysql_close($con);
}
else
{
echo "not been set, failed to process. please try again.";
}
?>
我想更新表doc上的指定行,它应该通过id $ a更新此$ b中的标题和此$ C中的内容。但是什么都没发生,我的代码中有错吗?,nxt是我想知道记录是否已更新。提前谢谢。
答案 0 :(得分:1)
如果id
是一个整数列,则不应在其值周围使用'
:
WHERE id=$a
您可以使用mysql_affected_rows()
函数检查受影响的行数:
$rowsAffected = mysql_affected_rows($con);
您还应该检查查询字符串并尝试在MySQL上手动执行它(在PhpMyAdmin或类似的东西上),以检查它是否正常工作。
您的代码没有反SqlInjection部分。您应该使用PDO或任何类型的转义函数来使其更安全。
答案 1 :(得分:-1)
你确定if语句正在解雇(即$ _POST ['hid']和其他post vars设置)?另外,为什么你在'hid'而不是其他2个vars上运行isset()?
哦,如上所述,您应该始终清理您的vars以防止MySQL注入。您始终可以使用mysql_real_escape_string