如果id匹配,从mysql中选择行

时间:2011-02-24 20:27:01

标签: php mysql

我想从mysql中选择一个与特定id匹配的行。我希望得到结果,如果ID匹配,如果数据库中不存在ID,它不应该做任何事情。

我是这样的:

$q = "SELECT * FROM entries where id= '1'";
$result = mysql_query($q) or die(mysql_error());

if($result){
    $row = mysql_fetch_array($result) or die(mysql_error());
    $name = $row['name'];   
    }

echo "hello".$name;

如果db中存在id'1',它应该得到名称,否则没有或者至少它应该给出错误,但是当我使用它时,它只显示在此之后的页面的任何内容码。我做错了什么?

4 个答案:

答案 0 :(得分:4)

如果在此代码后没有显示任何代码,则可能是由于发生错误并且您的错误处理已设置,因此不会显示错误。

尝试搜索应包含您未看到的错误的php错误日志文件(normaly php_error.log)。

我会尝试的另一件事是添加更多的echo语句来查看php停止解释的位置。 像这样:

$q = "SELECT * FROM entries where id= '1'";

$result = mysql_query($q);

echo '<br />Query is send';
if(!$result) {
    die('<br/>MySQL Error: ' . mysql_error());
}
else {
    echo '<br />Result is true';
    $row = mysql_fetch_array($result);
    echo '<br />tryed fetching row';
    if ($row === FALSE) {
        echo '<br />$row is not false.';
        $name = $row['name'];
        echo '<br />$name now is "' . $name . '"';
    }
    else {
        die('<br/>MySQL Error: ' . mysql_error());
    }
}

echo '<br />hello: "' . $name . '"';

这可能有助于获得有关您问题的更多信息。

答案 1 :(得分:3)

$id = 1;
$sql = "SELECT `name` FROM `entries` WHERE `id` = $id LIMIT 1" //Since the id is probably an integer type on the DB, the single quotes aren't necessary, and sometimes screw it up.  I think MySQL possibly thinks it's a string when in quotes.

$result = mysql_query($sql) or die(mysql_error());

if(mysql_num_rows($result))
{
    $row = mysql_fetch_assoc($result) or die(mysql_error());
    $name = $row['name'];   
    echo 'Hello ' . $name;
}

答案 2 :(得分:1)

如果您指定的条件与任何行不匹配,SELECT查询可以返回0行,这不是错误。

发送查询后,您应该检查mysql_num_rows()的结果。

答案 3 :(得分:0)

也许您应该在if。

中添加else语句
if($result)
....

else
do something 

你甚至可能想尝试一下catch语句。