1

だから私はPHP/MySQLでウェブサイトをコーディングしています。$_GET を介して渡された 4 桁の数字では機能する 1 行がありますが、1 桁または 3 桁では機能しません。

これが私が使用したコードです。

    $planid = $_GET["planid"];
    $dbObj->dbQuery = "SELECT * FROM plans WHERE blnWebEnabled='yes' AND planid='$planid'";

var_dump を使用して、$planid が正しいことを確認しました: string(1) "1" そして、実際の SQL クエリ ステートメントは正しいです: string(60)

SELECT * FROM plans WHERE blnWebEnabled='yes' AND planid='1';

実際、MySQL コンソールにまったく同じ 1 文字ごとのステートメントを直接入力したところ、予想どおり 1 つのレコードが作成されました。しかし、何らかの理由で、これがブラウザにヒットすると、次のエラーが表示されます。

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

また、SQLステートメントに次のように言ってみました:

SELECT * FROM plans WHERE blnWebEnabled='yes' AND planid=1;

SELECT * FROM plans WHERE blnWebEnabled='yes' AND planid = 1;

SELECT * FROM plans WHERE blnWebEnabled = 'yes' AND planid = '1';

...およびその他のバリエーション。

クレイジーなことは、喜んで4桁の数字を取るということです. 私が使用しているデータベース キー フィールドは主キーで、 typeint(11)です。

誰か助けてくれませんか?私は欲求不満で髪を引き裂こうとしています!

お時間をいただきありがとうございます。

EDITもう少しテストからの詳細情報- 「blnWebEnabled = 'yes'」を取り出しても、同じエラーが発生します。strLen が少なくとも 4 になるまで $planid に先行ゼロを追加しようとすると、同じエラーが発生しますが、そのクエリは MySQL コンソールに直接入力した場合にも機能します。次のクエリは、PHP を介して問題なく動作します。

SELECT * FROM plans WHERE blnWebEnabled='yes' AND planid='1000';
4

1 に答える 1

0

$planidは空だと思います。$planid値を出力して、もう一度確認してください。

于 2012-10-17T05:07:58.670 に答える