выбор строки из mysql, если совпадает с идентификатором

Я хочу выбрать строку из mysql, которая соответствует определенному идентификатору. Я хочу получить результат, если 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; 

Если id '1' существует в db, он должен получить имя, иначе ничего или, по крайней мере, он должен дать ошибку, но когда я его использую, он просто не отображает никакого содержимого страницы, которая появляется после этого кода. Что я делаю неправильно?

Solutions Collecting From Web of "выбор строки из mysql, если совпадает с идентификатором"

Если после этого кода он не отображает код, это, вероятно, связано с ошибкой и установкой вашей обработки ошибок, поэтому ошибка не отображается.

Попробуйте найти файл журнала ошибок php (normaly php_error.log), который должен содержать ошибку, которую вы не видите.

Еще одна вещь, которую я хотел бы попробовать, – добавить дополнительные эхо-инструкции, чтобы увидеть, где именно 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 . '"'; 

Это может помочь получить дополнительную информацию о вашей проблеме.

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

Запрос SELECT может возвращать 0 строк, если указанное вами условие не соответствует никаким строкам, и это не ошибка.

Вы должны проверить результат mysql_num_rows() после отправки запроса.

Может быть, вам следует добавить инструкцию else к вашему if.

 if($result) .... else do something 

Возможно, вы даже захотите сделать инструкцию try catch.