0

このBDでこのコラムを取得しています

$result = mysql_query("SELECT short FROM textos");

そして、返される配列に基づいて結果の1つだけをエコーし​​ようとしています:

$col = mysql_fetch_assoc($result);

echo "<b>Short:</b>".$col[1]."<br/>";

明らかに、この $col 配列にはこの方法でアクセスできません。それはどのように行われるべきですか?ありがとう

4

3 に答える 3

1

最初の要素にアクセスするには、 を使用します$col[0]['short']
とにかく要素を 1 つだけ出力したい場合はLIMIT 1、MySQL クエリに追加できます。
クエリを実行した後、結果の配列が設定されているかどうかを確認する必要があります。そうでない場合、php は設定されて$col[0]['short']いないというエラーをスローします。

于 2012-11-17T22:17:32.027 に答える
1

それは上記のコメントですでに述べられているので、ここで少しだけ説明します。

mysql_fetch_assoc連想配列 (キーがフィールド名で値がフィールド値である配列) として提示された結果行を取得します。クエリは 1 つのフィールド ( short) のみを返しますが、それでも行を単一のスカラー値にはしません。単一の要素のみを持つ配列のままです。

$row['short']したがって、サンプルでは 、 またはとして参照する必要があります$col['short']

クエリが結果を返さない場合があることに注意してください。返された値が配列ではなくスカラーであるかどうかを確認することで、それを知ることができますfalse

if ($col === false) {
    echo 'Error occured<br/>';
} else {
    echo "<b>Short:</b>".$col['short']."<br/>";
}

実際に1行しか必要としない場合、潜在的に膨大な量のデータを返さないため、コメントが示唆するようにクエリLIMITに入れることも良い考えです。ただし、結果は多次元配列として返されるため、その部分は変更されません。

于 2012-11-17T22:17:53.800 に答える
1

行を取得する mysql_fetch 関数が 3 つあります。

  • mysql_fetch_array()両方のインデックス (数値および連想) を持つ配列を取得します
  • mysql_fetch_num()数値インデックスを持つ配列を取得します
  • mysql_fetch_assoc()連想インデックスを持つ配列を取得します

あなたの例では、関数 mysql_fetch_array() に対して次のような配列を取得します。

array(2) {
  [0]=>
  string(3) "foo"
  ["short"]=>
  string(3) "foo"
}
$statement = 'SELECT short FROM textos';
$result = mysql_result($statement);
if ($result) {
    while ($row = mysql_fetch_assoc($result)) {
        var_dump($row); // or echo "<b>Short:</b>".$row['short']."<br/>"; or something else you like to do with rows of the above statement
    }
}
于 2012-11-17T23:15:04.973 に答える