mysqli_num_rows () ожидает, что параметр 1 будет mysqli_result, логический с mysqli - PullRequest
0 голосов
/ 27 мая 2018

Я не могу получить предупреждение, что SQL-запрос работает, и mysqli_query () возвращает 1, и каждый раз, когда моя база данных также обновляется.В чем проблема?

Предупреждение: mysqli_num_rows () ожидает, что параметр 1 будет mysqli_result, логическое значение задано в C: \ xampp \ htdocs \ qq \ index.php в строке 55

кода

<?php
 try{
  $host="localhost";

 $user="deb";
 $password="12345";
 $database="1";
 $conn=mysqli_connect($host,$user,$password,$database);
 if (mysqli_connect_errno())
 {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
 }
 echo "connected succesfully";
   }catch(Exception $e){
 echo $e->getMessage();
 }
 $select=mysqli_select_db($conn,$database);
 if($select)
  {
  echo "yipee";
  }

echo "<table>
<thead>
<tr>
    <th>Id</th>
    <th>Value</th>
    <th>Threshold Value</th>
    <th>Chances of Fire</th>
</tr>
</thead>";
$val=$_GET["val"];

ошибка в этом коде:

$tval=$_GET["tval"];
 if ($val<$tval) {
 $res="less ";
 }
else{$res="exreme ";}
$sql1="INSERT INTO sensor (val,tval,result) VALUES 
('".$val."','".$tval."','".$res."')"; 
 $que=mysqli_query($conn,$sql1);
 if($que)
  {
  if(mysqli_num_rows($que))
   {
    while ($data=mysqli_fetch_array($que))
     {
    echo "<tr>";
    echo "<td>".$data['id']."</td><td>".$data['val']."/td> 
       <td>".$data['tval']."</td><td>".$data['result']."</td>";
    echo"</tr>";
     }
   }

   else{
      echo "nooooooo";
        } 
      }     
      echo"</table>"
        ? >

, даже если я удаляю mysqli_num_rows, ошибка его отображения на

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Ошибка, которую вы получаете, заключается в том, что запрос INSERT не выполнен, поэтому mysqli_query () возвратил false, чтобы указать, что запрос не выполнен.Успешный запрос возвратил бы объект mysqli_result ().Проверьте содержимое $ sql1 на наличие каких-либо синтаксических ошибок.

Вы можете использовать mysqli_error () после запроса на вставку, чтобы получить ошибку, возвращаемую MySQL.

Кстати, у вас все в порядкеоткрыт для атаки SQL-инъекций!Значение для $ tval поступает напрямую от пользователя без каких-либо попыток проверить или очистить его!Вы должны использовать подготовленные заявления.

0 голосов
/ 27 мая 2018

Согласно другому вопросу здесь :

Команда INSERT возвратит логическое значение (true / false), поэтому вы должны использовать команду select, чтобы получить требуемый результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...