私はmysqlとPHPをいじっていて、非常に奇妙な問題に遭遇しました:
データベース接続が正常に確立されたら、クエリに 2 つの変数を設定します。
$searchcolor = $_SESSION["color"];
$searchprice = $_POST["price"];
$query = "SELECT `toys`.`id` FROM `database`.`toys` WHERE `toys`.`color` = $searchcolor AND `toys`.`price` = $searchprice;";
$result = mysqli_query($link, $query);
echo $query;
このクエリは機能しません。エコーすると、次のような正しい文字列が読み取られます。
SELECT `toys`.`id` FROM `database`.`toys` WHERE `toys`.`color` = brown AND `toys`.`price` = 1500;
ただし、このコードは問題なく動作します。
$searchcolor = $_SESSION["color"];
$searchprice = $_POST["price"];
$query = "SELECT `toys`.`id` FROM `database`.`toys` WHERE `toys`.`color` = $searchcolor AND `toys`.`price` = 1500;";
$result = mysqli_query($link, $query);
echo $query;
最初に、配列$searchprice
によってコンテンツが正しく取得されていませんでしたが。$_POST
しかし、echo
最初の例の ed 検索クエリは問題ないようです。
-値$searchprice = 1500;
を取得する代わりに設定するときにも機能します。$_POST
整数などにキャストしようとしましたが、うまくいきませんでした。
これに関するすべてのヒントに乾杯し、感謝します!
(コードは短縮されています!)
おもちゃのテーブル構造:
id int(10)
name varchar(10)
color varchar(10)
price int(20)
編集:
おお、興味深い発見がありました:
echo "-".$searchprice."-";
-5-を与える
if ($searchprice == 5){echo "1";}
if ($searchprice == "5"){echo "2";}
与える.. 何もない?!
var_dump($searchprice);
string(14) "5" を与える
編集:
echo bin2hex($searchprice);
3c6e6f62723e353c2f6e6f62723e (?!) を返します
解決策: 送信フォームで Unicode 文字を使用しました。それがすべてを壊した。教訓: ユニコードを避ける。