我试图阻止mysql_query错误输出到我的表单上。目前,如果找不到位置,我收到错误
“警告:mysql_result()[function.mysql-result]:无法跳转到MySQL结果索引11上的第0行”
我正在尝试捕获此错误,而是将$ location变量指定为未找到。我尝试这个的代码如下,我做错了什么?
谢谢!
$query3 = "SELECT `location` FROM location WHERE vin = '$vin' LIMIT 1";
$result3 = mysql_query($query3);
if (!mysql_result($result3,0)) {
$location = "Not found";
} else $location = mysql_result($result3,0,0);
答案 0 :(得分:6)
mysql_result()
。你最好用以下的东西:
$result3 = mysql_query($query3) or die(mysql_error());
if (mysql_numrows($result3) == 0) then
$location = "not found";
} else {
$row = mysql_fetch_array($result3);
$location = $row[0];
}
您的错误是由查询未返回任何行 - 例如没有匹配。然后,您尝试检索该结果集的第一行中的第一个字段,该行不存在。使用mysql_numrows()
检查返回的行数更安全,因为无论查询是否找到任何内容或行数是多少都可以。
答案 1 :(得分:0)
首先,您可以添加@:
if (!@mysql_result($result3,0)) {
$location = "Not found";
} else $location = mysql_result($result3,0,0);
其次,您可以在mysql_num_rows(result3)
来电之前检查mysql_result
。
答案 2 :(得分:0)
你应该研究如何在php ini中设置你的错误和警告级别 - 通常你想要尽可能少的输出。
http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting
但是,在这里,产生该错误的代码是:
$result3 = mysql_query($query3);
这就是你应该写下你的if或“或者死”的陈述:
$result3 = mysql_query($query3)or die($location = "not found");
答案 3 :(得分:0)
如果没有找到任何内容,则mysql_query返回false,这很简单:
$result3 = mysql_query($query3);
if (mysql_affected_rows($result3) == 0) {
$location = "Not found";
} else $location = mysql_result($result3,0,0);
应该这样做。
答案 4 :(得分:0)
你应该考虑使用OOP;使用数据库类来处理与数据库的交互。
但是,在尝试恢复结果之前,基本上你想要检查是否有任何行。
尝试使用“if”语句中的“mysql_num_rows”进行检查:
if (!mysql_num_rows($result3)) {