Я прочитал много руководств, чтобы понять, как вставлять несколько строк в один запрос, поскольку мне приходится иметь дело с вопросом о множественном выборе в форме PHP (v5.4).INSERT INTO массив с MySQL и PDO
К сожалению, у меня все еще есть ошибки в моем запросе.
Не могли бы Вы помочь мне?
Чтобы быть более точным о цели, я сделал вид, и я создал базу данных в MySQL с:
одной таблицей (A), чтобы сохранить все отдельные значения из радио-кнопки и текстовые вопросы с SERIAL id.
таблица для каждого вопроса с несколькими вариантами выбора, в которой перечислены все возможные ответы в одном столбце и идентификационный код в другом столбце.
и «промежуточная» таблица для каждого вопроса с несколькими вариантами выбора, чтобы сохранить тот же идентификатор, который был создан автоматически при вставке в таблицу A и идентификатор из значений, выбранных в поле вопроса
(так, для одной формы заполнены, я ожидаю, чтобы получить одну строку в таблице а, и столько же строк, как выбранные значения в каждой соответствующей «промежуточной» таблицы.
Мой PHP код (который относится только к одному несколько вариантов вопрос в качестве теста):
try {
$pdo = new PDO('mysql:host=myserver_url;dbname=my_db', 'my_user','my_pass');
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
}
catch(PDOException $e) {
echo 'Fail to connect';
exit();
}
try {
if(isset($_POST['add'])){
if(isset($_POST['checkbox_name'])) {
$values = '('.implode('),(', $_POST['checkbox_name']).')';
$sql =$pdo->exec("INSERT INTO my_db.my_table (field1)
VALUES ($values) ");
}
}
}
catch(PDOException $e) {
$msg = 'ERROR PDO in ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
die($msg);
}
Код HTML:
<body>
<form name="form_1" method="post" action="form_1.php">
<input type="checkbox" name="checkbox_name[]" value="1"><label >Telephone</label><br/>
<input type="checkbox" name="checkbox_name[]" value="2"><label >Mail</label><br/>
<input type="checkbox" name="checkbox_name[]" value="3"><label >Other</label><br/>
<br/>
<br/>
<input type="submit" name="add" value="SEND"/>
</form>
Большое спасибо за помощь!
Не отвечая на ваш вопрос, пожалуйста, используйте подготовленные заявления! Просто использование PDO не делает ваш скрипт безопасным для SQL-инъекций. Создайте и подготовьте свой запрос с помощью вопросительных знаков [количество элементов массива], а затем вставьте его с помощью '$ stmt-> execute ($ array)' вместо того, чтобы его развязать. Проверьте [этот ответ] (http://stackoverflow.com/a/327384/1154316) о том, как это сделать. – tillz
Какой конкретный учебник вы прочитали? –
Эхо из '$ values' вы должны увидеть свою проблему – RiggsFolly