通过id更新mysql中的行

时间:2012-04-29 14:39:36

标签: php

好的,我有这段代码。

<? //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是我想知道记录是否已更新。提前谢谢。

2 个答案:

答案 0 :(得分:1)

  1. 如果id是一个整数列,则不应在其值周围使用'

    WHERE id=$a

  2. 您可以使用mysql_affected_rows()函数检查受影响的行数:

    $rowsAffected = mysql_affected_rows($con);

  3. 您还应该检查查询字符串并尝试在MySQL上手动执行它(在PhpMyAdmin或类似的东西上),以检查它是否正常工作。

  4. 您的代码没有反SqlInjection部分。您应该使用PDO或任何类型的转义函数来使其更安全。

答案 1 :(得分:-1)

你确定if语句正在解雇(即$ _POST ['hid']和其他post vars设置)?另外,为什么你在'hid'而不是其他2个vars上运行isset()?

哦,如上所述,您应该始终清理您的vars以防止MySQL注入。您始终可以使用mysql_real_escape_string