このBDでこのコラムを取得しています
$result = mysql_query("SELECT short FROM textos");
そして、返される配列に基づいて結果の1つだけをエコーしようとしています:
$col = mysql_fetch_assoc($result);
echo "<b>Short:</b>".$col[1]."<br/>";
明らかに、この $col 配列にはこの方法でアクセスできません。それはどのように行われるべきですか?ありがとう
最初の要素にアクセスするには、 を使用します$col[0]['short']
。
とにかく要素を 1 つだけ出力したい場合はLIMIT 1
、MySQL クエリに追加できます。
クエリを実行した後、結果の配列が設定されているかどうかを確認する必要があります。そうでない場合、php は設定されて$col[0]['short']
いないというエラーをスローします。
それは上記のコメントですでに述べられているので、ここで少しだけ説明します。
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
に入れることも良い考えです。ただし、結果は多次元配列として返されるため、その部分は変更されません。
行を取得する mysql_fetch 関数が 3 つあります。
あなたの例では、関数 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
}
}