1

PDO を使用して PHP で作成したクエリに問題があります。コード:

$link = new PDO("mysql:dbname=$dbname;host=127.0.0.1",$username,$password);
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = $link->prepare("SELECT locality_name FROM :passedday GROUP BY locality_name ORDER BY locality_name DESC");
$query->bindParam(":passedday",$day); //Where day is, well, a day passed to the script elsewhere
$query->execute();
$result = $query->fetchAll();
$link = null;
//Do things with the $result.

私が得ているエラーメッセージは次のとおりです。

SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。MySQL サーバーのバージョンに対応するマニュアルで、1 行目の ''05_26_09' GROUP BY locality_name ORDER BY locality_name DESC' 付近で使用する正しい構文を確認してください。

サーバー上で直接クエリを実行すると、問題なく適切な結果セットが返されます。私が間違っていることはありますか?

ティア。

編集:

$dayGET 引数として渡されます。したがって、 にhttp://127.0.0.1/day.php?day=05_26_09つながり$day = $_GET['day'];ます。

4

2 に答える 2

2

テーブルの名前を賭けることになっている場合05_26_09は、エスケープの問題があると思います。ローカル オペレーティング システムはライブ サーバーとは異なりますか?

bindValue()/bindParam()を値以外のもの (テーブル名、フィールド名など) に使用できるとは思いません。ですから、ローカル システムで動作することに少し驚いています。

于 2009-06-29T22:58:19.213 に答える