MySQL debug

Материал из PhpWiki.

Перейти к: навигация, поиск

"У меня не работает запрос к базе, что делать?"

Симптомы:

Warning: mysql_*_*(): supplied argument is not a valid MySQL result resource in ...

Во-первых, надо внимательно посмотреть на сам запрос. Для этого надо его вывести. Ищем то место, где делается запрос (обычно это вызов функции mysql_query()) и копируем то, что у неё в первом параметре.

Например:

$result = mysql_query('SELECT * FROM mytable WHERE name LIKE \''.$username.'\'');

Значит нам нужна строка 'select * from mytable where name like \.$username.'\. Проще всего, когда скрипт собирает запрос в какую-либо переменную:

$sql = 'select * from mytable where name like \''.$username.'\'';
$result = mysql_query($sql);

Тогда нам просто придется вывести эту переменную.

Здесь следует немного отойти от темы и коснуться темы дебаггинга в PHP вообще. Очень удобно иметь для этого специальную функцию, с помощью которой можно контролировать значения переменных.

function dump($var) {
echo '<pre>';
print_r($var);
echo '</pre>';
}

Только будьте внимательны – если у вас в переменной будет HTML, то проконтролируйте исходный код страницы в браузере.

Теперь смотрим на запрос и понимаем, что мы на самом деле не совсем то имели ввиду, исправляем очевидные ошибки, и все начинает работать. Нет? Ну ладно, будем дальше искать. Теперь мы посмотрим, чем именно My SQL не угодил этот запрос. Все просто – нужно написать одну строчку после запроса:

echo mysql_error();

Тут вы увидите много интересного. Например: Table 'data_base.my_teble' doesn't exist. Из чего мы понимаем, что мы допустили очепятку в названии таблицы (ну или забыли эту самую таблицу создать).

Вот и все. Просто внимательнее следите за синтаксисом. Если уж совсем ничего не получается – пишите в форум, вам обязательно помогут. Только не забывайте в вопросе писать сам запрос и ошибку, которую выдал сервер.

Copyright http://phpclub.ru/faq/

как стать моделью

Ссылки
Реклама