捕获mysql_query错误

时间:2011-02-16 16:30:55

标签: php mysql

我试图阻止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);

5 个答案:

答案 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)) {