Bartaq
19.05.2015 - 21:54
Помогите пожалуйста, не могу понять в чем фокус?
Написал 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
19.05.2015 - 22:07
Строковые данные в запросе нужно обрамлять кавычками или апострофами (кавычки вокруг R13, очевидно, поставлены не просто так). А вообще, задавая вопрос, нужно приводить и ошибку тоже.
Bartaq
19.05.2015 - 22:26
Учту замечание, вот ошибка:
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
19.05.2015 - 22:31
Спасибо, взял переменные в апострофы - ошибка пропала, но непонятно, почему не дала ошибку на предыдущие 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
19.05.2015 - 23:00
BartaqАпостроф - это часть sql запроса. Все строковые значения должны в sql запросе быть заключены в апострофы.
$name = "Вася";
$sql = "SELECT * FROM loser WHERE name = " . $name;
var_dump($sql);
$sql = "SELECT * FROM loser WHERE name = '" . $name . "'";
var_dump($sql);
Чувствуешь разницу?
_____________
[продано копирайтерам]
Игорь_Vasinsky
20.05.2015 - 07:57
омг
_____________
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