1

我是 PHP 新手,不了解与 mysql 的交互,尤其是运行后的查询。这是我的代码:

$mysqli = new mysqli('localhost', 'foo', 'bar', 'table');
    if ($mysqli->connect_error) {
        die('Connect Error (' . $mysqli->connect_errno . ') '. $mysqli->connect_error);
    }

    $sql = "select column_name from information_schema.columns where table_name='activity'";
    if ($execute = $mysqli->query($sql)) {
        $result = mysqli_fetch_array($execute);//trying an array
        $row_count = count($result);
    }
    for ($i=0; $i < $row_count; $i++) { 
        echo $i . ' ' . $result['column_name'] . '<br>';
    }

当我像这样运行它时,我得到这个输出:

0 i
1 d

什么?
当我在数据库上运行相同的查询时,我得到了这个:

column_name
___________
id
name
description
score
quality_id
date_mod

这正是我想要的,但在 php.ini 中。
我也试过这个:

for ($i=0; $i < $row_count; $i++) { 
    echo mysql_result($execute, $i, 'column_name');
}

我得到

mysql_result() 期望参数 1 是资源

我没有得到什么?

有什么方法可以让数据库交互更容易?

4

2 回答 2

2

调用mysqli_fetch_array将结果集的第一行作为数组提供给您,它不会为您提供数组中的所有结果。

如果您想获得所有结果,则必须执行以下操作:

$i = 0;
While ($result = mysqli_fetch_array($execute))
{
  echo $i . ' ' . $result['column_name'] . '<br>';
  $i++;
}

顺便问一下,你确定你在呼应$result['column_name']吗?从你得到的结果来看,你正在使用它$result[$i]

于 2012-10-07T00:59:39.100 回答
0

乍一看,我看到

if ($execute = $mysqli->query($sql)) {

$execute 未定义,您应该使用 == 进行比较

$mysqli = new mysqli('localhost', 'foo', 'bar', 'table');
    if ($mysqli->connect_error) {
        die('Connect Error (' . $mysqli->connect_errno . ') '. $mysqli->connect_error);
    }

    $sql = "select column_name from information_schema.columns where table_name='activity'";

    /**
     * Execute the query. Returns false on failure.
     * On success, returns an an object (we store that object in $result)
     * in which you can do things like fetch_array(), etc
     */
    $result = $mysqli->query($sql);

        /**
         * in here you can pass MYSQLI_NUM, MYSQLI_ASSOC, MYSQLI_BOTH
         * MYSQLI_NUM will allow you to do echo $row[0];
         * MYSQLI_ASSOC will allow you to do echo $row['column_name'];
         * MYSQLI_BOTH will let you do both.
         */

        // Store results in the $row array
        $rows = $result->fetch_array(MYSQLI_ASSOC) // in here you can pass MYSQLI_NUM, MYSQL_ASSOC or MYSQL_BOTH
        $row_count = count($rows);
    }
    for ($i=0; $i < $row_count; $i++) { 
        echo $i . ' ' . $row['column_name'] . '<br>';
}
于 2012-10-07T01:03:48.333 回答