mysql_query
MySQL クエリを送信する
説明
mixed mysql_query(string $query
, resource $link_identifier
= NULL)
パラメータ
-
query
-
SQL クエリ。
クエリ文字列は、セミコロンで終えてはいけません。
クエリ内のデータは 適切にエスケープ
する必要があります。
-
link_identifier
-
MySQL 接続。指定されない場合、mysql_connect により直近にオープンされたリンクが指定されたと仮定されます。そのようなリンクがない場合、引数を指定せずに mysql_connect がコールした時と同様にリンクを確立します。リンクが見付からない、または、確立できない場合、E_WARNING
レベルのエラーが生成されます。
戻り値
SELECT, SHOW, DESCRIBE や EXPLAIN 文、その他結果セットを返す文では、
mysql_query は成功した場合に
resource を返します。エラー時には false
を返します。
それ以外の SQL 文 INSERT, UPDATE, DELETE, DROP などでは、
mysql_query は成功した場合に
true
、エラー時に false
を返します。
返された結果にアクセスするためには、結果リソースを
mysql_fetch_array やその他の関数に渡します。
SELECT 文によって返された行の数を知るには
mysql_num_rows を用います。また
DELETE, INSERT, REPLACE, または UPDATE 文で変更された行の数を
知るには mysql_affected_rows を用います。
クエリが参照するテーブルにアクセスする権限がない場合も
mysql_queryは失敗し、false
が返されます。
例
例1 間違ったクエリ
次のクエリは文法的に間違っているので、
mysql_queryは失敗し false
を返します。
<?php
$result = mysql_query('SELECT * WHERE 1=1');
if (!$result) {
die('Invalid query: ' . mysql_error());
}
?>
例2 正しいクエリ
次のクエリは正しいので、mysql_query
は resource を返します。
<?php
// これはユーザーが指定する。たとえば
$firstname = 'fred';
$lastname = 'fox';
// クエリの作成
// これは SQL クエリを実行する最良の方法です。
// さらなる例は、mysql_real_escape_string() を参照ください。
$query = sprintf("SELECT firstname, lastname, address, age FROM friends
WHERE firstname='%s' AND lastname='%s'",
mysql_real_escape_string($firstname),
mysql_real_escape_string($lastname));
// クエリの実行
$result = mysql_query($query);
// 結果のチェック
// MySQL に送られたクエリと返ってきたエラーをそのまま表示します。デバッグに便利です。
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
// 結果の利用
// $result をそのまま出力してもリソースの内部の情報にはアクセスできません。
// 結果に対して MySQL の関数を適用する必要があります。
// mysql_result(), mysql_fetch_array(), mysql_fetch_row() なども参照ください。
while ($row = mysql_fetch_assoc($result)) {
echo $row['firstname'];
echo $row['lastname'];
echo $row['address'];
echo $row['age'];
}
// 結果セットに関連付けられているリソースの開放
// これは、スクリプトが終了する際に自動的に実行されます。
mysql_free_result($result);
?>
参考
- mysql_connect
- mysql_error
- mysql_real_escape_string
- mysql_result
- mysql_fetch_assoc
- mysql_unbuffered_query