Возможный дубликат:
Предупреждение: mysql_fetch_array (): предоставленный аргумент не является допустимым результатом MySQL
$err = mysql_query("INSERT INTO tridy (id,NazevTridy,url) VALUES ( '$i', '$tridy->find('div[class=rozvrhseznam]', 0)->find('a[href]', $i)->outertext', '$tridy->find('div[class=rozvrhseznam]', 0)->find('a[href]', $i)->href')"); mysql_error($err); // line 97
Предупреждение: mysql_error (): предоставленный аргумент не является допустимым ресурсом MySQL-Link в /hosting/www/cran-web.com/www/rozvrh/engine.php в строке 97
— строки 2-6:
$username="*****.com"; $password="*********"; $database="*********"; mysql_connect('127.0.0.1', $username, $password) or die('Could not connect'.mysql_error()); mysql_select_db($database) or die( "Cannot select db.");
Я получаю эту ошибку, когда пытаюсь выполнить мой запрос. Можете ли вы сказать, что означает сообщение об ошибке и как его исправить?
mysql_error()
ожидает «ресурс ссылки» и нет «ресурса результата». Правильный путь – это что-то вроде:
$username="*****.com"; $password="*********"; $database="*********"; $connection = mysql_connect('127.0.0.1', $username, $password) or die('Could not connect'.mysql_error()); mysql_select_db($database, $connection) or die( "Cannot select db."); $err = mysql_query("INSERT INTO tridy (id,NazevTridy,url) VALUES ( '$i', '$tridy->find('div[class=rozvrhseznam]', 0)->find('a[href]', $i)->outertext', '$tridy->find('div[class=rozvrhseznam]', 0)->find('a[href]', $i)->href')", $connection); mysql_error($connection); // line 97
Обратите внимание на использование $connection
. Соединение Wile $ можно отбросить повсюду, как в
mysql_error();
Который использует последнее открытое соединение или открывает по умолчанию новый. Хотя в зависимости от подключения по умолчанию плохо. Вы также можете посмотреть в mysqli или PDO в качестве альтернативных способов общения с MySQL.
mysql_error ($ ERR); удалите аргумент! Он ссылается на ресурс, а не на количество ошибок.
Ссылка используется для распознавания разных подключений (вы можете получить их с помощью mysql_connect), прочитав об этом, если вам нужно больше.
Вы передаете запрос в mysql_error, вам нужно передать идентификатор ссылки.
Также помните, что mysql_query()
связанный с INSERT
возвращает true
при успешном выполнении и false
при ошибке.
Поэтому присвоение переменной $err
каким-то образом вводит в заблуждение, if($err)
означает отсутствие ошибки и наоборот.
Лучше:
$success = mysq_query("INSERT...."); if(!$success) { // use of $connection is pointed to in other answers $error_msg = mysql_error($connection); // so some error handling }
О mysql_error()
:
Параметр : соединение MySQL. Если идентификатор ссылки не указан, предполагается, что последняя ссылка, открытая
mysql_connect()
и возвращаемое значение:
Возвращает текст ошибки из последней функции MySQL или '' (пустая строка), если ошибка не возникла.
Таким образом, вы также делаете что-то с возвращаемым значением. Просто вызов mysql_error()
бесполезен!