Иногда так происходит, что mysql_query () не удается ВСТАВИТЬ данные, и я не знаю о нем. Так, вопрос состоит в том, как я знаю, когда это происходит?
Если причиной ошибки является тупик, вы можете попробовать очередной раз.
Если вы используете разумную клиентскую библиотеку, она выдаст исключение при сбое команды SQL, и вы можете программно изучить код ошибки, чтобы знать, что делать.
Если у вас нет кода, обрабатывающего этот конкретный путь к ошибке, вам, вероятно, следует запустить стандартный обработчик ошибок, который записывает ошибку, трассировку стека и некоторую другую отладочную информацию в журнал.
предлагает создать оболочку для mysql_query, которая обнаруживает сбой и регистрирует запрос плюс mysql_error где-нибудь
Цитата из страницы документации mysql_query
:
Для
SELECT
,SHOW
,DESCRIBE
,EXPLAIN
и другие операторы, возвращающие набор результатов,mysql_query ()
возвращает {{1} }ресурс
в случае успеха илиFALSE
в случае ошибки .Для других типов операторов SQL:
INSERT
,UPDATE
,DELETE
,DROP
и т. Д., { {1}}mysql_query ()
возвращаетИСТИНА
при успехе илиЛОЖЬ
при ошибке.
Итак, чтобы определить, произошла ли ошибка, вы должны проверить возвращаемое значение вашего вызова mysql_query
:
$result = mysql_query('...');
if ($result === false) {
// And error has occured while executing
// the SQL query
}
Что вы можете сделать?
mysql_error
и mysql_errno
. Однако помните: пользователю не нужно знать (и он не поймет) сообщение о технической ошибке - поэтому не отображайте его.
Вы можете использовать mysql_error php.net/mysql_error , чтобы получить лучшее объяснение, которое вы затем либо отображаете, либо регистрируете в файле.
вы должны проанализировать ваш sql. вы вывели параметры? похоже, что проблема может быть в этом. вы можете вставить ваш sql, чтобы мы могли вам помочь.
чтобы показать ошибку, вы можете использовать, например,
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error());
.
Возможно, вы можете проверить LAST_INSERT_ID() (mysql_insert_id() в PHP). При условии, что в вашей таблице есть столбец auto_increment.
Одна проверка, которую я обычно выполняю, похожа на пример
$result = mysql_query( $query );
if ( !empty( $error = mysql_error() ) )
{
echo 'Mysql error '. $error ."<br />\n";
}
else
{
// the query ran successfully
}
Это хорошая проверка для любых запросов