2015-12-29 2 views
4

У меня есть несколько запросов, которые не работают. Когда я нажимаю кнопку отправки на предыдущей странице, я попадаю на пустую страницу, и ничто не вставлено в таблицу «answer_det» в моей базе данных, и текст «Информация, сохраненная успешно» не появляется. Что я делаю неправильно?Несколько запросов не выполняются

<?php 
 
ini_set('display_errors',1); 
 
error_reporting(E_ALL); 
 

 
if(mysqli_connect_errno()) 
 
{ 
 
\t echo mysqli_connect_error(); 
 
} 
 

 
$pid5 = $_POST['pid4']; 
 
    
 
$aid1 = $_POST['a1']; 
 
$aid2 = $_POST['a2']; 
 
$aid3 = $_POST['a3']; 
 
$aid4 = $_POST['a4'];  
 
    
 
$answ1 = $_POST['ans1']; 
 
$answ2 = $_POST['ans2']; 
 
$answ3 = $_POST['ans3']; 
 
$answ4 = $_POST['ans4']; 
 
    
 
$point1 = $_POST['pointset1']; 
 
$point2 = $_POST['pointset2']; 
 
$point3 = $_POST['pointset3']; 
 
$point4 = $_POST['pointset4']; 
 

 
$que = "INSERT INTO answer_det VALUES('$pid5','','$aid1','$answ1','$point1')"; 
 
$que .= "INSERT INTO answer_det VALUES('$pid5','','$aid2','$answ2','$point2')"; 
 
$que .= "INSERT INTO answer_det VALUES('$pid5','','$aid3','$answ3','$point3')"; 
 
$que .= "INSERT INTO answer_det VALUES('$pid5','','$aid4','$answ4','$point4')"; 
 

 
$run = mysqli_multi_query($mysqli,$que); 
 
if($run) 
 
{ 
 
\t echo "<br>Information stored successfully"; 
 

 
} 
 
else 
 
{ 
 
\t echo mysql_error(); 
 
} 
 

 

 
?>

+0

Включите 'error_reporting (E_ALL);' и вы увидите, что у вас нет точек с запятой между вашими вызовами. Кроме того, ваш код широко открыт для SQL-инъекции (проверьте массивы POST, прежде чем он будет сохранен в db). – Jan

+0

$ mysqli (объект подключения), где вы определили –

+0

Вы смешиваете 'mysql и mysqli' в своем коде – Saty

ответ

1

В дополнении к моему комментарию (добавлено запятая):

$que = "INSERT INTO answer_det VALUES('$pid5','','$aid1','$answ1','$point1');"; 
$que .= "INSERT INTO answer_det VALUES('$pid5','','$aid2','$answ2','$point2');"; 
$que .= "INSERT INTO answer_det VALUES('$pid5','','$aid3','$answ3','$point3');"; 
$que .= "INSERT INTO answer_det VALUES('$pid5','','$aid4','$answ4','$point4');"; 

$run = mysqli_multi_query($mysqli,$que); 

ВИДЕТЬ PHP manual, где четко сказано:

Выполняет один или несколько запросов, которые соединены точкой с запятой .

2

В случае вам просто нужно вставить эти данные, нет необходимости для нескольких запросов, используйте это для запуска кода в качестве одного запроса:

$que = "INSERT INTO answer_det VALUES('$pid5','','$aid1','$answ1','$point1'), "; 
$que .= "('$pid5','','$aid2','$answ2','$point2'), "; 
$que .= "('$pid5','','$aid3','$answ3','$point3'), "; 
$que .= "('$pid5','','$aid4','$answ4','$point4');"; 

$run = mysqli_query($mysqli, $que); 
+2

Я хочу, чтобы это было показано, чтобы показать, как сделать многострочный ввод правильно. Но потом я понял, что вы все еще вставляете недоверенные переменные в запрос, поэтому я должен вас понизить. Вывод: без голосования. –

Смежные вопросы