php代码update语句不能执行,别的sql语句就可以,不知道问题出在哪?

$pro=array();
$pro=array(
"question" => $_POST['question'],
"option1" => $_POST['option1'],
"option2" => $_POST['option2'],
"option3" => $_POST['option3']
);
$id = $_POST['id'];
$row=mysql_query("update survey set option1=".$pro['option1']."");
if($row)
{
$successList = array("message" => "文章修改成功.");
}
else
{
$errorList = array("message" => "文章修改失败.");

}

// 显示信息
showMessage();

第1个回答  2013-10-24
$row=mysql_query("update survey set option1=".$pro['option1']."");

修改为
$row=mysql_query("update survey set option1='".$pro['option1']."'");
option1这个变量如果是int类型的话,你第一句是可以的,如果是字符,这个是更新不进去的,需要在变量外面加入单引号('变量值');
还有一点,这个更新操作,最好别判断$row,因为如果用户在修改的时候,想来想去,最终所有字段都未修改,你这个程序进去了,最终还是会判断的,但是你sql语句没有修改,还是原来的值sql默认是不会做操作的,也就是说没修改的情况下,$rows还是返回false,这样你这个就会提示文章修改失败!!

希望能对你有所帮助追问

谢谢,那应该判断什么啊?我是新手,求指教。

追答

$affectedrows = mysql_affected_rows() 函数来获取影响的行数
如果没修改提交了,这个$affectedrows会是0,
正常修改的话$affectedrows是有>0的值(大于0的操作常见批量删除操作中)

但是问题又来了,如果别人乱填一个的话,比如要求填入的是int类型,你来个varchar,那一样失败哦。
所以更新操作我们通常是在更新前需要做足够的判断(排除了由于变量类型错误导致的更新失败),然后直接 $row=mysql_query("update survey set option1='".$pro['option1']."'");
后面直接显示成功==>$successList = array("message" => "文章修改成功.");
over!

本回答被提问者采纳
第2个回答  2013-10-24
$row=mysql_query("update survey set option1=".$pro['option1']."");
你的这句话错了多了一个引号,
$row = mysql_query("update survey set option1=".$pro['option1']);

这样就行了或者
$row = mysql_query("update survey set option1=$pro['option1']");

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网