简体   繁体   中英

selecting row from mysql if id matches

I want to select a row from mysql which matches a specific id. I want to get the result if the ID matches, if the ID does not exists in the database, it should not do anything.

I run sth like this:

$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;

If the id '1' exists in the db, it should get the name, otherwise nothing or at least it should give the error, but when i use this, it just display no any content of the page which comes after this code. What I'm doing wrong?

If it does not display any code after this code, this is probably due to an error occuring and your error handling being set so the error is not displayed.

Try searching for the php error log file (normaly php_error.log) that should contain the error that you do not see.

Another thing i would try is adding more echo statements to see where exactly php stops interpreting. Like this:

$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 . '"';

That might help to get some more information about your problem.

$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;
}

A SELECT query can return 0 rows if the condition you specified doesn't match any rows, and that isn't an error.

You should rather check the result of mysql_num_rows() after sending the query.

Maybe you should add a else statement to your if.

if($result)
....

else
do something 

You might even want to do a try catch statement.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM