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

wtf?
データベースで同じクエリを実行すると、次のようになります。

column_name
___________
id
name
description
score
quality_id
date_mod

これはまさに私が欲しいものですが、phpで。
私もこれを試しました:

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 に答える