У меня возникают проблемы при попытке вставить («имя пользователя», как я использую в качестве примера) в mysql db .. в любом случае, как только я обновляю сайт, я получаю «успех» msgstr "сообщение, которое я установил, если он работал так, как нужно, и пустая строка вставляется в мой db. Тем не менее, он также работает обычным способом при вводе текста в текстовое поле (после того, как я получил сообщение «Успех») и нажмите «Отправить», он также вставлен в db. Но моя проблема в том, что это первая пустая вставка, которой не должно быть, я больше не знаю, как ее решить:/вставляет пустую строку в mysql db
Я также получаю уведомление в верхней части сайта, говоря «Неопределенный индекс: имя пользователя »Я понятия не имею, что я сделал неправильно:/
Вот мой код кСТАТИ:
<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "pw";
$dbname = "dbname";
$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if($conn->connect_error) {
die("Connection Failed: " . $conn->connect_error);
}
$user = $_POST["username"];
$sql = "INSERT INTO account (username) VALUES ('$user')";
if($conn->query($sql) === true) {
echo "Success!";
} else {
echo "Error: " . $sql . "<br />" . $conn->error;
}
$conn->close();
?>
<form method="POST" action="">
<input type="text" name="username" placeholder="Username" /><br /><br />
<input type="submit" name="submit" value="Go" />
</form>
Thx в Adv. :)
что произойдет, если мое имя пользователя '; Учетная запись DROP TABLE; --'? – castis
** ПРЕДУПРЕЖДЕНИЕ **: при использовании 'mysqli' вы должны использовать параметризованные запросы и [' bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), чтобы добавить пользователя данные по вашему запросу. ** НЕ используйте ** интерполирование строк, чтобы выполнить это, потому что вы создадите серьезные [SQL-инъекции ошибок] (http://bobby-tables.com/). То, как вы закодировали это, будет работать только при определенных обстоятельствах и крайне рискованно. – tadman