[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Дает ошибку при замене константы на переменную
Bartaq
Помогите пожалуйста, не могу понять в чем фокус?
Написал SQL-запрос с константами, проверил что работает, меняю константы на переменные - три поменялись а одна не хочет :unsure:

Этот код работает

$q = mysqli_query ($link, "SELECT shina.*
FROM shina, s_key
WHERE s_key.sezon = shina.sezon
AND (s_key.s_key =
$_v_s_key
AND shina.tr_shir = $_v_tr_shir
AND shina.tr_prof = $_v_tr_prof
AND shina.tr_diam = \"R13\")
ORDER BY shina.tr_shir, shina.tr_prof, shina.tr_diam"
);


А в этом коде показывает ошибку

$q = mysqli_query ($link, "SELECT shina.*
FROM shina, s_key
WHERE s_key.sezon = shina.sezon
AND (s_key.s_key =
$_v_s_key
AND shina.tr_shir = $_v_tr_shir
AND shina.tr_prof = $_v_tr_prof
AND shina.tr_diam = $_v_tr_diam)
ORDER BY shina.tr_shir, shina.tr_prof, shina.tr_diam"
);
Placido
Строковые данные в запросе нужно обрамлять кавычками или апострофами (кавычки вокруг R13, очевидно, поставлены не просто так). А вообще, задавая вопрос, нужно приводить и ошибку тоже.
Bartaq
Учту замечание, вот ошибка:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/u953610019/public_html/test.php on line 68

"R13" в кавычках потому что там в базе данных текстовое поле, как и другие поля тоже текстовые, и константы тоже стояли в кавычках, но выше они заменились а в этом не хочет.
Bartaq
Спасибо, взял переменные в апострофы - ошибка пропала, но непонятно, почему не дала ошибку на предыдущие 3 замены?
И непонятно, зачем переменную брать в апострофы? Она же переменная....

В итоге получилось так, работает:

$q = mysqli_query ($link, "SELECT shina.*
FROM shina, s_key
WHERE s_key.sezon = shina.sezon
AND (s_key.s_key = '
$_v_s_key'
AND shina.tr_shir = '
$_v_tr_shir'
AND shina.tr_prof = '
$_v_tr_prof'
AND shina.tr_diam = '
$_v_tr_diam')
ORDER BY shina.tr_shir, shina.tr_prof, shina.tr_diam"
);
AllesKlar
Bartaq
Апостроф - это часть sql запроса. Все строковые значения должны в sql запросе быть заключены в апострофы.

$name = "Вася";

$sql = "SELECT * FROM loser WHERE name = " . $name;
var_dump($sql); // SELECT * FROM loser WHERE name = Вася

$sql = "SELECT * FROM loser WHERE name = '" . $name . "'";
var_dump($sql); // SELECT * FROM loser WHERE name = 'Вася'


Чувствуешь разницу?

_____________
[продано копирайтерам]
Игорь_Vasinsky
омг

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.