2015-01-08 2 views
1

У меня есть PHP-скрипт, который собирает данные формы и вставляет некоторые из этих данных в базу данных MySQL. Я только заметил, что некоторые вставки/записи не были или никогда не создавались в базе данных. Я хотел бы написать процедуру повтора, которая, если вставка не повторит попытку 3 раза, а затем сделает ошибку пользователю.mysql insert error check

Точно так же вы можете увидеть мой код для БД и вставки, так что вы можете увидеть, что я НЕ орехи ...

mysql_connect($hostname,$username, $password) or die(mysql_error()); 
mysql_select_db($dbname) or die(mysql_error()); 

Вот мой код вставки:

$query = "INSERT INTO contacts VALUES  ('','$name','$address','$city','$state','$zip','$phone','$email_address','$arrive','$depart','$room','$found','$promocode','$message','$datetimestamp','$ip')"; 
mysql_query($query); 
mysql_close(); 

I начинался с утверждения IF, затем в цикл, но терялся.

@Jay:

Так что-то вроде этого:

$conn = new mysqli($hostname, $username, $password, $dbname); 
     // check connection 
     if (mysqli_connect_errno()) 
     { 
      exit('Connect failed: '. mysqli_connect_error()); 
     } 

     $query = "INSERT INTO contacts VALUES ('','$name','$address','$city','$state','$zip','$phone','$email_address','$arrive','$depart','$room','$found','$promocode','$message','$datetimestamp','$ip')"; 
     // Performs the $query on the server to insert the values 
     if ($conn->query($query) === TRUE) { 
     //echo 'users entry saved successfully'; 
     } 
     else { 
     echo 'Error: '. $conn->error; 
     } 
     $conn->close(); 

Я уже проверка для инъекций до запроса вставки

+5

Вместо re вы должны убедиться, что данные безопасны для вставки и не содержат символов '' 'например. Подготовленный оператор в PDO или mysqli автоматически разрешит это. – jeroen

+0

Почему вы хотите повторить попытку? –

+0

Пожалуйста, [не используйте 'mysql_ *' функции] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php). Они больше не поддерживаются и [официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). Узнайте о [подготовленных заявлениях] (http://en.wikipedia.org/wiki/Prepared_statement) и используйте [PDO] (http://us1.php.net/pdo) или [MySQLi] (http: // us1.php.net/mysqli). [Запретить SQL Injection!] (Http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

ответ

-1

Ваш запрос совершенен, убедитесь, что число параметров вы передача в sql-запросе такая же, как и число столбцов в таблице базы данных & Значение параметра в sql - это тот же порядок таблицы столбцов базы данных порядка