我的问题是如何确定我想返回的行是存在的?我不想用PHP的@选项来抑制它,或者在每个查询之前计算行数以找出行是否存在。我如何逃脱MySQL'无法跳转0行'错误?
所以这是一个简单的查询是这样的:
"SELECT `title`, `id` FROM `event` WHERE `id` = '234'";
和表不能包含具有id 234
行。
我的问题是如何确定我想返回的行是存在的?我不想用PHP的@选项来抑制它,或者在每个查询之前计算行数以找出行是否存在。我如何逃脱MySQL'无法跳转0行'错误?
所以这是一个简单的查询是这样的:
"SELECT `title`, `id` FROM `event` WHERE `id` = '234'";
和表不能包含具有id 234
行。
你可能会使用mysql_result()什么来获取领域。改为考虑mysql_fetch_array。如果没有更多行要提取,它将返回FALSE。
<?php
$mysql = mysql_connect('..', '..', '..') or die(mysql_error());
mysql_select_db('..', $mysql) or die(mysql_error());
$query = "SELECT `title`, `id` FROM `event` WHERE `id` = '234'";
$result = mysql_query($query, $mysql) or die(mysql_error());
$row = mysql_fetch_array($result, MYSQL_ASSOC);
if (!$row) {
echo 'no such record';
}
else {
echo $row['title'], ' ', $row['id'];
}
您不必在每次查询之前对行进行计数 - 通常您会在之后执行此操作。
大约是这样的
$query = "SELECT `title`, `id` FROM `event` WHERE `id` = '234'";
$results = mysql_query($query);
if (mysql_num_rows($results)) {
// do something because it was found
}
嘿!谢谢你的帮助,这个问题!否则mysql_fetch_array工作的更好时,mysql_result有什么意义? – fabrik 2009-08-26 08:06:09
我几乎总是使用fetch_array,唯一的例外是确保返回一个记录和一个或两个字段(或完全失败)的查询,如SELECT Count(*)FROM xyz。在这种情况下,我有时使用mysql_result()...“已经使用”,因为我不要再使用php/mysql,而是使用pdo ;-) – VolkerK 2009-08-26 08:15:22
感谢您的解释。是的,COUNT是一个典型的mysql_result查询类型,我想我可以减少MySQL的负载,如果我尽可能经常使用mysql_result。我的错是网站正在大量使用mysql_result,因此我需要检查我的查询以消除由不同查询方法引起的冲突。 – fabrik 2009-08-26 08:25:24