2017-02-22 3 views
0

Поэтому у меня есть этот код в файле PHP:Получение сообщения об ошибке при попытке вставить данные в таблицу

$query="INSERT INTO tec (name) VALUES ('$name')"; 
$done=mysql_query($query); 
if($done == 'null') { 
    $output = json_encode(array('type'=>'error', 'message' => $mess['error'].$done.'</b></div>')); 
} else { 
    $output = json_encode(array('type'=>'success', 'message' => $mess['success'])); 
} 

Он вставляет имя в таблицу с именем «ТЕС». Если $done == 'null', то я печатаю сообщение об ошибке. Проблема в том, что когда я запускаю код, он правильно вставляет данные, но я получаю сообщение об ошибке. Я пытался читать $done и его равным 1. Должен ли я сделать что-то вроде:

if($done == 1){ 
    //OK 
}else{ 
    //NOT OK 
} 

Или есть ли способ исправить это?

+2

[Пожалуйста, не используйте 'mysql_ *' функции в новом коде] (http://stackoverflow.com/questions/12859942/). maintai ned [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [Красная рамка] (http://uk.php.net/manual/en/function.mysql-connect.php)? Узнайте о [* подготовленных заявлениях *] (https://en.wikipedia.org/wiki/Prepared_statement) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http: // php.net/mysqli) - [эта статья] (http://php.net/manual/en/mysqlinfo.api.choosing.php) поможет вам решить, какой из них лучше для вас. –

ответ

2

documentation говорит, что mysql_query возвращает FALSE об ошибке. Это означает, что вместо того, чтобы испытывать ли это равно 'null' (строка, которая сравнивает, как TRUE), вы можете просто проверить булево-ность непосредственно:

if($done){ 
    //OK 
}else{ 
    //NOT OK 
} 

Я бы упущением, если бы я не упомянул о том, что mysql_* семья из функций осуждается, небезопасный и будет удален из будущих версий PHP! Вместо этого я могу лично рекомендовать PDO, который я использовал с хорошим успехом.

+0

Спасибо за объяснение. Это сработало :) – Juanky

+0

@Juanky Awesome! Не могли бы вы принять мой ответ? Тогда я мог получить этот странный увлекательный бонус. – Ben

2

Согласно документации PHP mysql_query функция в manual

Для SELECT, SHOW, DESCRIBE, EXPLAIN и другие заявления, возвращающиеся, mysql_query ResultSet() возвращает ресурс при успехе, FALSE при ошибке.

Для других типов операторов SQL, INSERT, UPDATE, DELETE, DROP и т. Д. Mysql_query() возвращает TRUE при успешном завершении или FALSE при ошибке.

Итак, выполните поиск, если это TRUE или FALSE.

if ($done == TRUE) { 
1

Привет Я думаю, вы должны использовать булеву просто попробовать это (лучше использовать MySQLi вместо MySQL

if(!done) 
{ 
// something wrong 
echo mysql.. 
} 
else 
{ 
// everything works fine.... 
} 
1

Ошибка ловли должно быть примерно следующее:

if($done === false){ 
    //NOT OK 
}else{ 
    //OK 
} 

Но, как @ Джон Конде упомянул, что не используйте mysql_ *, потому что его устарело.

Смежные вопросы