【问题标题】:mysqli_query, mysqli_fetch_array and while loopmysqli_query、mysqli_fetch_array 和 while 循环
【发布时间】:2012-10-24 16:38:11
【问题描述】:

我是 PHP 新手,我正在尝试使用 PHP 构建网站。我有 localhost 来测试结果,并且我已经在网站上安装了 phpmyadmin。

我现在要做的是从数据库“门户”中列出我的表“属性”的内容,并用结果填充一个表。

我正在使用mysqli_querymysqli_fetch_array 和 while 循环。我收到以下错误:

警告:mysqli_fetch_array() 期望参数 1 为 mysqli_result, C:\xampp\htdocs\falcon\portal\forms\edit listing.php 中给出的布尔值 在第 15 行

session_start();
require_once "connect_to_mysql.php"; // where i store username and password to access    my db.

$sqlCommand = "SELECT * property FROM portal"; // dbname: portal - table: propery
$query = mysqli_query($myConnection, $sqlCommand);

$Displayproperty = '';
while ($row = mysqli_fetch_array($query))
$id = $row["pid"];
$title = $row["ptitle"];
$area = $row["parea"];
$city = $row["pcity"];
$Displayproperty .= '<table width="500" border="0" cellspacing="0" cellpadding="1">
<tr>
<td>' . $id . '</td>
<td>' . $title . '</td>
<td>' . $area . '</td>
<td>' . $city . '</td>
<td><a href="forms.php?pid=' . $id . '">Upload images</a><br /></td>
</tr>
</table>';

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    你的查询是错误的,所以之后

    $query = mysqli_query($myConnection, $sqlCommand);
    

    $query 是假的。这就是为什么,您会收到错误消息。

    正确的 SQL 查询是:

    SELECT * FROM portal.property
    

    如果需要指定数据库名称。 另外,在做之前:

    while ($row = mysqli_fetch_array($query))
    

    您应该检查 $query 是否存在

    if(!empty($query) {
    while ($row = mysqli_fetch_array($query)) {
    ...
    

    【讨论】:

      【解决方案2】:

      用这个替换您的查询。确保您之前已添加此行。

      $db = mysql_select_db('portal');
      
      $sqlCommand = "SELECT * FROM property"; 
      

      【讨论】:

      • 谢谢。错误已消失,但我没有显示任何数据。
      • 好。查询后,立即键入此行并检查您获得了多少行。 echo $totalRows = mysql_num_rows($query);
      • 在 while ($row = mysqli_fetch_array($query)) 之后也没有大括号。应该是 while ($row = mysqli_fetch_array($query)) { 然后在table标签之后结束,'; }
      • 我收到一个错误“mysql_num_rows() 期望参数 1 是资源,给定的对象”。
      • 我添加了大括号。
      【解决方案3】:

      应该是

      $sqlCommand = "SELECT * FROM portal.property"; /* Database_Name.Table_Name */
      

      或者干脆使用

      $sqlCommand = "SELECT * FROM property";
      

      【讨论】:

      • 你的意思是portal.property :-P
      • 数据库“portal”中的表“property”..难道不是其他方式吗
      • @RocketHazmat 哈哈,这令人困惑:p
      【解决方案4】:

      你的 SQL 语句

      SELECT * property FROM portal
      

      不是正确的 sql,因此查询不会被执行。尝试删除单词property 以获得一些结果。

      【讨论】:

        【解决方案5】:

        您需要先使用以下方式连接到数据库门户:

        $myConnection = new mysqli("localhost", "user", "password", "database");
        

        然后运行:

        $mysqli->query("SELECT * FROM property"); // This will run the query on portal database.
        

        如果你想简单地查询门户的属性表,你可以使用:

        $mysqli->query("SELECT * FROM portal.property");
        

        mysqli_query("SELECT * FROM portal.property");
        

        【讨论】:

          【解决方案6】:

          问题是您的 SQL 语句中存在语法错误,导致 mysqli_query() 返回 false。

          SELECT * property FROM portal 不是有效的 SQL。

          您应该始终检查以确保 mysqli_query 返回一个有效的结果,其结构如下:

          $result = mysqli_query($myConnection, $sqlCommand);
          if(! $result) {
              die("SQL Error: " . mysqli_error($myConnection));
          }
          
          // use result here.....
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-04-03
            • 1970-01-01
            • 2014-01-06
            • 2017-04-01
            • 1970-01-01
            • 2018-05-23
            • 1970-01-01
            相关资源
            最近更新 更多