【问题标题】:mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in directory name [duplicate]mysqli_fetch_array() 期望参数 1 为 mysqli_result,在目录名称中给出布尔值 [重复]
【发布时间】:2015-08-10 07:42:19
【问题描述】:

我在 php 代码中遇到了问题。错误如下:

mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in directory name

php代码是:

<?php
$edit_record = $_GET['edit'];

$query = "select * from std_reg where student_id='edit_record'";

$run = mysqli_query($conn, $query);

while($row = mysqli_fetch_array($run))
{
$id = $row['Student_id'];
$name = $row['name'];
}
?>

有人可以帮忙吗?

【问题讨论】:

  • 更改为while($row = mysqli_fetch_array($run))
  • 仍然无法正常工作 yara
  • 您的查询"select * from std_reg where student_id='$edit_record'";
  • $runboolean,因为您的查询失败。在进入while 循环之前添加一些错误检查。

标签: php mysql arrays mysqli


【解决方案1】:

您必须将结果类型添加到mysqli_fetch_array

syntaxmysqli_fetch_array(result,resulttype);

while($row = mysqli_fetch_array($run,MYSQLI_ASSOC))

【讨论】:

  • 不,你没有。第二个参数有一个默认值。
【解决方案2】:

为while循环赋予行名并将$添加到查询中的edit_record

$edit_record = $_GET['edit'];

$query = "select * from std_reg where student_id='$edit_record'";

$run = mysqli_query($conn, $query);

while($row = mysqli_fetch_array($run))
{
  $id = $row['Student_id'];
  $name = $row['name'];
}

【讨论】:

    【解决方案3】:
    1. $row 未在任何地方定义。在while 循环中,您必须设置$row = mysqli_fetch_array($run)

    2. 您没有正确传递值以进行查询。 $ 此处缺少 student_id='edit_record'

      <?php
      $edit_record = mysqli_real_escape_string($conn, $_GET['edit']);
      
      $query = "SELECT * FROM std_reg WHERE student_id='$edit_record'";
      
      $run = mysqli_query($conn, $query);
      
      
      if($run)
      {
          while($row = mysqli_fetch_array($run))
          {
              $id = $row['Student_id'];
              $name = $row['name'];
          }
      }
      ?>
      

    【讨论】:

    • @ImranKhan 我已经更新了我的答案。 $ 此处缺失 student_id='edit_record'
    • @ImranKhan 我的回答对你有用吗?
    【解决方案4】:

    你真的应该使用mysqli_fetch_assoc 而不是mysqli_fetch_array。它可以为您提供您想要的结果,而无需明确说明您想要什么类型的数组。

    【讨论】:

    • 你应该举个例子,也许可以链接到文档来改进你的答案。
    【解决方案5】:

    从这个查询:

    $query = "select * from std_reg where student_id='edit_record'";    
    

    对此查询:

    <?php
    $edit_record = $_GET['edit'];$query = "select * from std_reg where student_id=".$edit_record; //Please try to observed the concatenation
    
    $run = mysqli_query($conn, $query);
    
    while($row = mysqli_fetch_assoc($run)) {
    $id = $row['Student_id'];
    $name = $row['name'];
    }
    ?>
    

    【讨论】:

    • 我现在已经编辑了我的答案。
    • 你应该添加一个解释是什么/为什么这样做,而原来的没有......
    猜你喜欢
    • 2013-03-04
    • 2015-03-12
    • 2014-02-27
    • 1970-01-01
    • 2012-07-06
    • 2011-02-02
    • 2023-02-12
    • 1970-01-01
    • 2018-11-06
    相关资源
    最近更新 更多