だから私は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';