某处我做错了事,我的查询结果为true而不是false。在我的表中,id 246确实存在,但在表中lev为零。我做错了什么,这个查询应该导致错误。它回声成功,但不更新表格。在php中的mysql查询计算结果为true
if (mysql_query("UPDATE ex_usrs SET lev = '1' WHERE id = '246' AND lev = '3'")) {
echo "success";
} else {
echo "fail";
}
某处我做错了事,我的查询结果为true而不是false。在我的表中,id 246确实存在,但在表中lev为零。我做错了什么,这个查询应该导致错误。它回声成功,但不更新表格。在php中的mysql查询计算结果为true
if (mysql_query("UPDATE ex_usrs SET lev = '1' WHERE id = '246' AND lev = '3'")) {
echo "success";
} else {
echo "fail";
}
从docs:
对于SELECT,SHOW,描述,解释等语句返回 结果集,请求mysql_query()成功返回资源,或在 错误时返回FALSE。
对于其他类型的SQL语句,INSERT,UPDATE,DELETE,DROP等, mysql_query()在成功时返回TRUE或在错误时返回FALSE。
返回的结果资源应该传递给mysql_fetch_array(), 和其他函数来处理结果表,来访问 返回的数据。
使用mysql_num_rows()来找出有多少行被返回的 SELECT语句或mysql_affected_rows()函数来找出有多少行 受到影响由DELETE,INSERT,REPLACE或UPDATE语句。
请勿使用mysql_query
来检查您是否确实更新了某些行。改为使用mysql_affected_rows()
。
你没有做错什么:因为它是正确执行mysql_query
语句返回true!
这并不意味着数据库中的任何行都会更新。
从您的描述中,它听起来像查询正在运行,但没有做任何更改。正如其他人所指出的那样,这是预期的行为。
您还表示,ID为246的记录的lev为零。这说明更新失败的原因。你只更新与编号246的记录,如果列弗已被设置为3,根据您的情况,下面的任一可能会更好地为您:
if (mysql_query("UPDATE ex_usrs SET lev = '1' WHERE id = '246' AND lev = '0'")) {
echo "success";
} else {
echo "fail";
}
或忽略当前状态列弗完全:
if (mysql_query("UPDATE ex_usrs SET lev = '1' WHERE id = '246'")) {
echo "success";
} else {
echo "fail";
}
好的谢谢我现在明白了。当我更新记录时,我的印象是真实的。 – Wilest