我已经正确地遵循了所有的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");
}
答案 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注入。
根据@Tchalvak建议提及绑定,这些是针对SQL Injections的更新工具以及更好的优化,但请记住,如果你有PHP 5 +,则支持PDO和MySQLi:
和
答案 1 :(得分:1)
您想使用mysql_error函数查看查询返回的错误。
正如Jeremy Conley所指出的集成一样,请注意不要让mysql_error
函数输出在生产HTML中发布。
答案 2 :(得分:1)
一旦完成调试,我可以添加,请删除任何mysql_error()输出吗?这对于攻击者来说是非常棒的信息,因为它揭示了数据库细节。记录它或不显示错误......增加一点额外的安全性。