Проблема в том, что когда я заполняю форму, она вставляет две записи в sql, первую, которую я ввел, а вторая пустая. Я действительно не знаю, почему он добавляет второй. Я сомневаюсь в if($result)
, в котором я думаю, что $ result выполняется во второй раз, и именно поэтому он показывает пустую строку.Пустая строка отображается после успешного mysql INSERT
<?php
$connection = mysql_connect("localhost", "db", "pass");
mysql_select_db("dbname", $connection);
$name = mysql_real_escape_string(stripslashes($_POST['name']));
$email = mysql_real_escape_string(stripslashes($_POST['email']));
$password = mysql_real_escape_string(stripslashes($_POST['pass']));
$sql="INSERT INTO users VALUES('$name','$email','$password')";
$result = mysql_query($sql);
if($result) {
echo '{"success":1}';
} else {
echo '{"success":0,"error_message":"Sorry, your registration failed. Please go back and try again."}';
}
?>
Обязательное предложение, [** Не использовать 'mysql_ *' функции в новом коде **] (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (http://j.mp/XqV7Lp). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). –
Хранение паролей в текстовом виде является определенным «no-no» –
Опубликуйте свою схему БД. Если у вас есть одноименные столбцы, тогда вам лучше использовать их, а не просто «INSERT INTO users». Т.е.: 'INSERT INTO users (имя, адрес электронной почты, пароль)' Это как ** «Я возьму эти 3 шара и выброшу их в любом месте, надеясь, что они попадут в правильные отверстия». ** –