piano0011 Ответов: 3

Как использовать mysqli_num_rows здесь?


У меня есть следующий запрос, и я могу заставить его вставить в базу данных только в том случае, если я не использую mysqli_num_rows($stmt); по какой-то причине, когда я использую его, он говорит что-то о булевой ошибке, но мой запрос выглядит правильным:

<pre><?php

include_once 'includes/dbh.php';
include_once 'header.php';

  $sql = "SELECT * FROM users WHERE user_uid = ?;";

  $stmt = mysqli_stmt_init($conn);
   if (!mysqli_stmt_prepare($stmt, $sql)) {
        echo 'SQL statement failed';
    } else {
         //Bind parameters to the placeholder
         mysqli_stmt_bind_param($stmt, "s", $_SESSION['u_uid']);
         //Run parameters inside database
         mysqli_stmt_execute($stmt);
         $result = mysqli_stmt_get_result($stmt);
         $row = mysqli_fetch_assoc($result);


         if ($row['admin'] == 0) {
             header("Location: header.php?add=notadmin");
             exit;
       } else {

   if (isset($_POST['submit'])) {

   
   
   $question_number = $_POST['question_number'];
   $question_text = $_POST['question_text'];
   $correct_choice = $_POST['correct_choice'];
   //Choices array
   $choices = array();
   $choices[1] = $_POST['choice1'];
   $choices[2] = $_POST['choice2'];
   $choices[3] = $_POST['choice3'];
   $choices[4] = $_POST['choice4'];



  $sql2 = "INSERT INTO questions (question_number, `text`) VALUES (?,?);";

  $stmt = mysqli_stmt_init($conn);
    //Prepare the prepared statement
    if (!mysqli_stmt_prepare($stmt, $sql2)) {
        echo 'SQL statement failed';
    } else {
         mysqli_stmt_bind_param($stmt, "is", $question_number, $question_text);
         $result = mysqli_stmt_execute($stmt);
    //     $result2 = mysqli_stmt_get_result($stmt);
         
    //   $resultCheck2 = mysqli_num_rows($result2);

        if ($result) {

 foreach($choices as $choice => $value) {

    if ($value != '') {
       if ($correct_choice == $choice) {
           $is_correct = 1;
     } else {
          $is_correct = 0;
     }

    $sql3 = "INSERT INTO choices (question_number, is_correct, `text`) VALUES (?,?,?);";

    $stmt = mysqli_stmt_init($conn);
    //Prepare the prepared statement
    if (!mysqli_stmt_prepare($stmt, $sql3)) {
        echo 'SQL statement failed';
    } else {
         mysqli_stmt_bind_param($stmt, "iis", $question_number, $is_correct, $value);
         mysqli_stmt_execute($stmt);
  }


}

  } 
 } else {
     echo "There are no results";
}
 } 
}
}
}






Что я уже пробовал:

Я попытался использовать mysqli_num_rows, чтобы увидеть, возвращает ли он какую-либо строку в базе данных, но по какой-то причине он просто не может вставить ее в базу данных.... Мне просто интересно... можете ли вы использовать num_rows, если у вас нет автоматического приращения в базе данных?

piano0011

Я надеюсь, что вошел в правильное место, так как здесь мне нужно больше разъяснений.. Я попытался использовать mysqli_stmt_affected_rows следующим образом:

$sql2 = "вставить в вопросы (question_number, `text`) значения (?,?);";

$stmt = mysqli_stmt_init($conn);
//Подготовьте подготовленное заявление
if (!mysqli_stmt_prepare($stmt, $sql2)) {
echo 'SQL statement failed';
} еще {
mysqli_stmt_bind_param($полу, "это", $question_number, $question_text);
mysqli_stmt_execute($полу);
$результат2 = mysqli_stmt_get_result($полу);
resultCheck2 $ = mysqli_stmt_affected_rows($результат2);




if ($resultCheck2 < 1) {
заголовок("Location: header.php?add=error");
выход();

но все равно получаю ту же ошибку:

3 Ответов

Рейтинг:
2

markkuk

Вам нужно использовать mysqli_stmt_affected_rows[^] чтобы получить количество вставленных строк. mysqli_num_rows() используется только с результирующими наборами из SELECT заявления.


Рейтинг:
2

piano0011

Спасибо за ответ и высоко оцениваю оказанную помощь.. Неудивительно, что я не могу использовать mysqli_num_rows, так как он используется только для операторов select


Рейтинг:
1

piano0011

Итак, буду ли я делать это подобно mysqli_num_rows? Могу ли я сделать следующее? $результат=mysqli_stmt_affected_rows ($полу);

If ($result >0) {}; etc


Richard MacCutchan

Пожалуйста, не публикуйте вопросы в качестве решений. Люди будут думать, что вы больше не нуждаетесь в помощи. Отредактируйте свой вопрос и добавьте туда любые обновления.