代码之家  ›  专栏  ›  技术社区  ›  Debashree Bardhan

mysqli_num_rows()要求参数1为mysqli_result,布尔值为mysqli

  •  1
  • Debashree Bardhan  · 技术社区  · 7 年前

    我不能得到警告 SQL查询正在运行,mysqli_query()返回1,每次更新数据库时都会返回1。有什么问题?

    警告:mysqli_num_rows()要求参数1为mysqli_结果,在第55行的c:\xampp\htdocs\qq\index.php中给出了布尔值。

    代码的

    <?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_行,它在上显示错误

    2 回复  |  直到 7 年前
        1
  •  1
  •   rawplutonium    6 年前

    根据另一个问题 here :

    这个 INSERT 命令将返回布尔值(true/false),因此必须使用select命令获取所需的结果。

        2
  •  1
  •   SpacePhoenix    7 年前

    您得到的错误是因为插入查询失败,所以mysqli_query()返回了false,表示查询失败。如果查询成功,则返回mysqli_result()对象。检查$sql1的内容是否有语法错误。

    您可以在插入查询之后使用mysqli_error()来获取mysql返回的错误。

    顺便说一句,您完全可以接受SQL注入攻击!$tval的值是直接从用户那里得到的,没有任何验证或清理的尝试!你应该使用准备好的陈述。