Я хочу выбрать строку из 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, он должен получить имя, иначе ничего или, по крайней мере, он должен дать ошибку, но когда я его использую, он просто не отображает никакого содержимого страницы, которая появляется после этого кода. Что я делаю неправильно?
Если после этого кода он не отображает код, это, вероятно, связано с ошибкой и установкой вашей обработки ошибок, поэтому ошибка не отображается.
Попробуйте найти файл журнала ошибок 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.