web-dev-qa-db-ja.com

PHP / MySQLで1行のみをフェッチする

可能性のある複製:
mysql_fetch_array()はパラメータ1がリソースであると想定し、ブール値はselectで指定されます

ここに簡単な質問。

SELECTクエリがあります

SELECT FROM friendzone WHERE ID = '$editID'"

これにより、結果として1行のみが得られると確信しています。原因IDはDB内で重複できません。

列の値にアクセスするにはどうすればよいですか?

$row = mysql_fetch_array($query);

配列を作成する必要がないため、これは役に立たないと思います。

While cicleに入れないで、たとえば.

.$row['ID'].

私は得る:

mysql_fetch_array() expects parameter 1 to be resource, boolean given

事前に感謝します。

11
wiredmark

新しいコードでmysql_*関数を使用しないでください それらはもはやメンテナンスされておらず、 非推奨プロセス が開始されています。 赤いボックス ?を参照してください prepared statement について学び、代わりに [〜#〜] pdo [〜#〜] または MySQLi - この記事 はどちらを決定するのに役立ちます。 PDOを選択する場合は、 こちらが良いチュートリアルです

で試してください:

$query = mysql_query("SELECT * FROM friendzone WHERE ID = '$editID'");
$row = mysql_fetch_array($query);

print_r($row);

MySQLiコード:

$conn = new mysqli('Host', 'username', 'password', 'database');
$stmt = $conn->prepare("SELECT * FROM friendzone WHERE ID = ?");
$stmt->bind_param("s", $editID);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_assoc();

print_r($row);
14
jan267

おそらく、あなたの_$query_はfalseと等しいです。何かがうまくいかなかったので、mysql_error()を試して、何が間違っているかを確認してください。

そして2つの小さなアドバイス:

  1. mysql_ *関数は廃止されているため、PDO od mysqliを使用することをお勧めします。

  2. 少なくともmysql_real_escape_string()を使用して、値をエスケープしてからSQL文字列に入れます

3
lupatus

Selectの一般的な構文を選択しようとしている列がわからないので

"SELECT column1, column2, column3 FROM friendzone WHERE ID ='$editID'"

または、すべての列を選択する場合は、単に入力します

"SELECT * FROM friendzone WHERE ID = '$editID'"
0