这是什么类型的错误,我的意思是在更新字段时,如果我使用",我得到这个错误。
警告:mysql_num_rows()期望参数1是资源,布尔值,在C:'Program Files'xampp'htdocs'shadaab' aaction.php第87行
ON 86-87我有这个查询
$result = mysql_query("SELECT name FROM album WHERE name='$name'");
if(mysql_num_rows($result) != 0)
关于SO的一个很常见的问题。这意味着您的查询失败,因此$result
为false
。
if (!$result){
echo mysql_error();
}
看看错误到底是什么。很可能你在$name
变量中有一些非法字符。因此,在将其嵌入查询字符串之前,您需要对其进行mysql_escape_string()
。
$name= mysql_escape_string($name);
顺便说一句,你的代码受制于sql注入。所以,最好使用prepared_statements
正如文档所说:
对于SELECT, SHOW, DESCRIBE, EXPLAIN等返回结果集的语句,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语句影响了多少行。
如果用户没有访问查询引用的表(s)的权限,mysql_query()也会失败并且返回FALSE。
你应该先检查$result !== false
mysql_query
对错误返回false。将第一行替换为这样(如果你想知道错误):
mysql_query("SELECT name FROM album WHERE name='$name'") or die(mysql_error());
For SELECT statements mysql_query()
在success
和FALSE
失败时返回一个资源。检查FALSE === $result