我正在玩弄 mysql 和 PHP 并遇到一个非常奇怪的问题:
建立成功的数据库连接后,我为查询设置了两个变量:
$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
-value 时也有效。
我尝试将它转换为整数和其他东西,但这没有奏效。
干杯并感谢您对此的每一个提示!
(代码被缩短了!)
玩具表结构:
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);
给出字符串(14)“5”
编辑:
echo bin2hex($searchprice);
给出 3c6e6f62723e353c2f6e6f62723e (?!)
解决方案:我在提交表单中使用了 unicode 字符。那打破了一切。教训:避免使用 unicode。