Как сделать вставку нескольких строк
у меня есть фрагмент кода, который я написал в mysqli, чтобы вставить несколько строк данных в базу данных.код действительно работает.я пытаюсь написать тот же код в PDO, но мне возвращается ошибка
<pre lang="PHP"> Catchable fatal error: Object of class PDOStatement could not be converted to string in C:\wamp64\www\test\Nouveau dossier\quiz\index.php on line 148
я действительно не понимаю, в чем проблема.Пожалуйста, помогите.
это фрагмент кода в mysqli
if (isset($_POST['register']) && !empty($_POST['answer1']) && !empty($_POST['answer2']) && !empty($_POST['answer3']) && !empty($_POST['answer4'])) { $answer1 = $_POST['answer1']; $answer2 = $_POST['answer2']; $answer3 = $_POST['answer3']; $answer4 = $_POST['answer4']; $servername = "localhost"; $username = "root"; $password = ""; $dbname = "test"; $con = new mysqli($servername, $username, $password, $dbname); if($con->connect_error){ die("Connection to db failed:" .$con->connect_error); } //Create an array and fill it with values coming from the form $answers_array = array( array('AnswerText' => $answer1, 'AnswerStatus' => 0, 'QuestionId' => 1), array('AnswerText' => $answer2, 'AnswerStatus' => 0, 'QuestionId' => 1), array('AnswerText' => $answer3, 'AnswerStatus' => 1, 'QuestionId' => 1), array('AnswerText' => $answer4, 'AnswerStatus' => 0, 'QuestionId' => 1) ); $sql = "INSERT INTO answers (AnswerText, AnswerStatus, QuestionId) VALUES "; $total = count($answers_array); $iterator = new ArrayIterator($answers_array); // //Iterate over the values in the object ArrayObject while($iterator->valid()){ $currentItem = $iterator->current(); $sql .="('".$currentItem['AnswerText']."','".$currentItem['AnswerStatus']."','".$currentItem['QuestionId']."')"; //$sql.='('.$currentItem['AnswerText'].','.$currentItem['AnswerStatus'].','.$currentItem['QuestionId'].')';/ $iterator->next(); $sql .= $iterator->key()? ',' : ';'; } //Now we insert the data into the database /* $con = mysql_connect($servername, $username, $password); mysql_select_db($dbname, $con); mysql_query($sql, $con);*/ if ($con->multi_query($sql) === TRUE) { echo "New records created successfully"; } else { echo "Error: " . $sql . "<br>" . $con->error; } $con->close(); }else echo "Please, fill the form fields !";
заранее спасибо
Что я уже пробовал:
это тот же самый код в PDO
if (isset($_POST['register']) && !empty($_POST['answer1']) && !empty($_POST['answer2']) && !empty($_POST['answer3']) && !empty($_POST['answer4'])) { $answer1 = $_POST['answer1']; $answer2 = $_POST['answer2']; $answer3 = $_POST['answer3']; $answer4 = $_POST['answer4']; $servername = "localhost"; $username = "root"; $password = ""; $dbname = "test"; $con = new PDO('mysql:$servername;$dbname', $username, $password); $answers_array = array( array('AnswerText' => $answer1, 'AnswerStatus' => 0, 'QuestionId' => 1), array('AnswerText' => $answer2, 'AnswerStatus' => 0, 'QuestionId' => 1), array('AnswerText' => $answer3, 'AnswerStatus' => 1, 'QuestionId' => 1), array('AnswerText' => $answer4, 'AnswerStatus' => 0, 'QuestionId' => 1) ); $sql=$con->prepare("INSERT INTO answers (AnswerText, AnswerStatus, QuestionId) VALUES "); $total = count($answers_array); $iterator = new ArrayIterator($answers_array); //Iterate over the values in the object ArrayObject while($iterator->valid()){ $currentItem = $iterator->current(); $sql .="('".$currentItem['AnswerText']."','".$currentItem['AnswerStatus']."','".$currentItem['QuestionId']."')";// line 148 //$sql.='('.$currentItem['AnswerText'].','.$currentItem['AnswerStatus'].','.$currentItem['QuestionId'].')'; $iterator->next(); $sql .= $iterator->key()? ',' : ';'; }; //Now we insert the data into the database /* $con = mysql_connect($servername, $username, $password); mysql_select_db($dbname, $con); mysql_query($sql, $con);*/ if ($sql === TRUE) { echo "New records created successfully"; } else { echo "Error: " . $sql . "<br>" . $con->error; } $con->close(); }else echo "Please, fill the form fields !";
ниже приведена форма, из которой я получаю свои ценности
<form action="index.php" method="POST"> <legend>This form helps type in answers proposition to question</legend> <br> <label for="Answer1">Answer 1 :</label> <br> <textarea name="answer1" id="answer1" cols="90" rows="5">Bonjour le monde</textarea> <br> <label for="Answer2">Answer 2 :</label> <br> <textarea name="answer2" id="answer2" cols="90" rows="5">Hello world</textarea> <br> <label for="Answer3">Answer 3 :</label> <br> <textarea name="answer3" id="answer3" cols="90" rows="5">Mè tsa téh</textarea> <br> <label for="Answer4">Answer 4:</label> <br> <textarea name="answer4" id="answer4" cols="90" rows="5">Guten tag</textarea> <br> <input type="submit" name="register" value="Save"> </form> </body>
Richard MacCutchan
"Я действительно не понимаю, в чем проблема"
Согласно сообщению об ошибке, он находится на линии 148. Но поскольку мы понятия не имеем, что это за линия, трудно что-либо предложить.
Patrice T
Какая линия 148 ?
winsderlich@yahoo.fr
$sql .="('".$currentItem['AnswerText']."','".$currentItem['AnswerStatus']."','".$currentItem['QuestionId']."')";// строка 148
Patrice T
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.