sql UPDATE错误?

时间:2011-03-11 00:38:14

标签: php sql

我已经正确地遵循了所有的mySQL教程,但它仍然不会更新我的表中的值,有人可以帮助我吗?,这些是我的价值观:

$editid = $_GET['id'];
$newtitle = $_POST['title'];
$newsneak = $_POST['sneak'];
$newbody = $_POST['body'];

$connect = mysql_connect("localhost","username","password") or die("Couldn't Connect. ");
mysql_select_db("dr") or die ("Couldn't Find DB.");

$query = mysql_query("SELECT * FROM news WHERE id=$editid");

$numrows = mysql_num_rows($query);

if($numrows=!0)
{
$querytitle = mysql_query("UPDATE news SET title=$newtitle WHERE id=$editid");
$querysneak = mysql_query("UPDATE news SET summary=$newsneak WHERE id=$editid");
$querybody  = mysql_query("UPDATE news SET body=$newbody WHERE id=$editid");
header("Location: ../index.php");
}

3 个答案:

答案 0 :(得分:3)

在你的选择上(添加myql_error来检查错误):

   $result = mysql_query("SELECT * FROM news WHERE id='$editid'");
   if (!$result) {
       die('Invalid query: ' . mysql_error());
   }

在您的更新中:

$querytitle = mysql_query("UPDATE news SET title='$newtitle' WHERE id='$editid'");
$querysneak = mysql_query("UPDATE news SET summary=$newsneak WHERE id='$editid'");
$querybody  = mysql_query("UPDATE news SET body='$newbody' WHERE id='$editid'");

在输入数据周围使用单引号也使用mysql_real_escape_string();避免sql注入。

PHP mysql_real_escape_string


根据@Tchalvak建议提及绑定,这些是针对SQL Injections的更新工具以及更好的优化,但请记住,如果你有PHP 5 +,则支持PDO和MySQLi:

PHP PDO

PHP MySQLi

答案 1 :(得分:1)

您想使用mysql_error函数查看查询返回的错误。

正如Jeremy Conley所指出的集成一样,请注意不要让mysql_error函数输出在生产HTML中发布。

答案 2 :(得分:1)

一旦完成调试,我可以添加,请删除任何mysql_error()输出吗?这对于攻击者来说是非常棒的信息,因为它揭示了数据库细节。记录它或不显示错误......增加一点额外的安全性。