2

MySQL のテーブルから列を選択して PHP 配列に変換しようとすると、問題が発生します。結果 (PHP 配列) をエコーし​​ても、何も返されません。

これが私のコードです:

$result_while = mysql_query("SELECT id` 
      FROM afunda_eleva");

$array = array();
while ($row = mysql_fetch_array($result_while)) {
  $array[] = $result_while['id'];
}

for($i=0; $i < 4; $i++)
{
    echo "$array[$i]"; //Possibly error happening here!!
}
4

3 に答える 3

3

Gustavomysql_queryは、新しい PHP バージョンでは非推奨です。安全ではありませんが、機能します。代わりに、データベース PDOをクエリする私のお気に入りの方法で答えます。これは安全でオブジェクト指向です。

まず、設定する必要があります

// instance of pdo
$config['db'] = array
(
    'host' => '',
    'username' => '',
    'password' => '',
    'dbname' => ''
);
$database = new PDO('mysql:host=' . $config['db']['host'] . 
';dbname=' . $config['db']['dbname'],
$config['db']['username'],
$config['db']['password']);
$database->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

//query with a new database object
$queryObject = $database->prepare("SELECT id 
FROM afunda_eleva");
//execute sql
$queryObject ->execute();
// store the results in array
$results = $queryObject->fetchAll();
//print_r results to test 
print_r($results);
//after analysing the array and how its structured define
for($i=0; $i < 4; $i++)
{
    echo $results[$i] 
}

インスタンスでデータベース資格情報を使用してそのコードを試してください。pdoを呼び出す前に含まれる別のdbファイルにこれを含めたい場合は、global $database;そのインスタンスを呼び出すようにしてください。

これは良いpdoチュートリアルのプレイリストです、頑張ってください

https://www.youtube.com/watch?v=XQjKkNiByCk

于 2013-09-27T00:53:58.620 に答える
2

まず、配列内の列名を操作する場合は、に置き換える必要がありmysql_fetch_arrayますmysql_fetch_assoc

while次に、ループ内で結果ではなく行にアクセスする必要があります。

$array[] = $row['id'];
于 2013-09-27T00:43:00.327 に答える
1

1-結果を得るには、$row代わりに配置する必要があります$result_while['id]

2-配列を印刷するには、print_r()またはvar_dump()を使用する必要があります

$result_while = mysql_query("SELECT id` 
      FROM afunda_eleva");

$array = array();
while ($row = mysql_fetch_array($result_while)) {
  $array[] = $row;
}

echo '<pre>';
print_r($array);
echo '<pre>';

要素内のテキストは<pre>固定幅フォント (通常は Courier) で表示され、スペースと改行の両方が維持されます。

補足: PHP で mysql_* 関数を使用すべきではない理由 (便利なリンク)

于 2013-09-27T00:46:23.640 に答える