Я играл вокруг с MySQL и PHP и ударил очень странной проблемой:Странное поведение строки 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
в первом примере кажется прекрасным.
Он также работает при установке $searchprice = 1500;
вместо получения $_POST
-значения.
Я пробовал отличать его до целого и прочее, но это не сработало.
Приветствия и благодарности за каждый намек на это!
(код укорачивается!)
Структура таблицы игрушек:
id int(10)
name varchar(10)
color varchar(10)
price int(20)
Edit:
Ого, только что сделал интересное открытие:
echo "-".$searchprice."-";
Придает - 5-
if ($searchprice == 5){echo "1";}
if ($searchprice == "5"){echo "2";}
Дает ... ничего ?!
var_dump($searchprice);
дает строку (14) "5"
Edit:
echo bin2hex($searchprice);
дает 3c6e6f62723e353c2f6e6f62723e
Solution (?!): Я использовал юникод символ в форме представивший. Это сломало все. Урок: Избегайте unicode.
Единственное, что остановит эти запросы от работы, это то, что у вас есть строка в sql для цвета, который не содержит кавычек вокруг него. – Kickstart
Вы должны получить 2 переменные от POST и один от SESSION? – Mihai
Даже с кавычками это не сработает. Переменные заменяются правильно. – user2970781