PHP-форма, добавляющаяся в таблицу MySQL

#php #mysql

#php #mysql

Вопрос:

Пытаюсь отправить данные в базу данных SQL из PHP-формы. Веб-страница не выдает никаких ошибок при подключении к базе данных, но не может понять, как передать эти переменные из html в mysql.

 $dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
    OR die('Could not connect to MySQL: ' .
    mysqli_connect_error());

    $sql = "insert into music (song, artist, album, year genre)
            values('$song', '$artist', '$album', '$year', '$genre',)";
    $dbc->query($sql)
 

Ответ №1:

Предполагая, что методом form является POST, вы должны использовать $_POST[] массив. Элемент HTML form id — это то, что вы используете для доступа к элементу массива.

Например, если у вас есть <input type="text" id="name"> , вы бы использовали $_POST['name'] для получения имени из формы.

В качестве альтернативы вы можете использовать $_REQUEST[''] which содержит $_POST , $_GET , и $_COOKIE значения.

Чтобы предотвратить внедрение SQL и другие проблемы, связанные с пользовательским вводом, вы также захотите использовать mysqli_real_escape_string() . Что-то вроде:

 $firstName = mysqli_real_escape_string($connection, $_REQUEST['firstName']);
 

Затем вставьте $firstName в свой запрос.

Дополнительная информация для mysqli_real_escape_string() :
PHP.net
Школы W3Schools

Комментарии:

1. Вы должны указать, как mysqli_real_escape_string( ) предоставить OP уровень защиты.

2. Очень хорошая мысль, @PhiterFernandes. Не стесняйтесь редактировать мой ответ, чтобы включить это 🙂

3. Я вижу, что вы начинаете свой путь в Stack Overflow, и вы столкнетесь со многими вопросами php, используя mysql_* и напрямую добавляя $_POST и $_GET к запросам. Вам придется каждый раз предупреждать их о внедрении SQL, это даст вам больше голосов.