i
Полезная информация
Свернуть
29.04.2024
ruensvdefrptesitzharnl

Идиотский вопрос

Идиотский вопрос

Дамы и господа, может, кто сходу знает. 

Имеется код (не кот, а код!)

 $_kill1 = 1; 
 $_kill2 = 2; 
 $_kill3 = 3; 

proba_l ($link, 'Hero_all', 'Существительное', ' ',  'Длинное = '.$_kill1 and 'Плоское = '.$_kill2 and 'Гибкое = '.$_kill3);

хде:

function proba_l($link, $t, $parametr, $parametr_ind, $usl)
 {
    $sql_re = "SELECT * FROM ".$t." WHERE ".$usl.";";
    $result_re = mysqli_query($link, $sql_re);
    $num_rows_re = mysqli_num_rows($result_re);
    $sqls_re = mysqli_fetch_all($result_re, MYSQLI_ASSOC);
    $x_re = rand(0, $num_rows_re-1);
    echo $sqls_re[$x_re][$parametr];
    $x_code_re = $sqls_re[$x_re][$parametr_ind];
    //echo $x_code_re;
    return $x_code_re;
 } 

И вот у меня в proba_l ($link, 'Hero_all', 'Существительное', ' ',  'Длинное = '.$_kill1 and 'Плоское = '.$_kill2 and 'Гибкое = '.$_kill3); 

Не работает условие WHERE ".$usl.";"; то бишь  'Длинное = '.$_kill1 and 'Плоское = '.$_kill2 and 'Гибкое = '.$_kill3); 

Когда просто 'Гибкое = '.$_kill3); то работает, а три условия - не хочет.

Может, кто сходу скажет, где ошибка в синтаксисе? 

А скорее всего он, родимый. 

 

0
Aagira Aagira 2 года назад #
;";"

?
Нет, не утверждаю, что так быть не должно, по идее, знаки нужные, но из разных областей (php и запрос в БД). Можно попробовать убрать лишний знак или экранировать кавычки (поменять их).
А вообще, Маш, почему у тебя ошибки на экран не выводятся? Лог ошибок ведется, хоть?
0
Aagira Aagira 2 года назад #
Попробуй так:
  1.  
  2. "SELECT * FROM '.$t.' WHERE '.$usl.' ";
  3.  


Или так:
  1.  
  2. 'SELECT * FROM ".$t." WHERE ".$usl." ';
  3.  
0
Aagira Aagira 2 года назад #
И то же самое с возвращенным на место
;
0
Aagira Aagira 2 года назад #
А теперь идиотский вопрос от меня: почему переменные в поисковом запросе (SELECT * FROM ".$t." WHERE ".$usl."; ) указаны с оператором конкатенации (точками). Просто любопытно, в чем идея?
0
Мария Фомальгаут Мария Фомальгаут 2 года назад #
Идиотский ответ: Это все так, потому что это работает. Хотя, если работает сейчас, конечно, не факт, что будет работать при каких-то других задачах.
Aagira Aagira 2 года назад #
Комментарий удален
0
Aagira Aagira 2 года назад #
Удалила свой «идиотский ответ» на «идиотский ответ». Конечно, оператор там как бы нужен для отделения переменной от кавычек, с другой стороны, мозг заплетается, т.к. точно ли он нужен в том варианте, где кавычки внутри кавычек? Насколько мне помнится сходу сейчас, в SQL-запросах свои особые кавычки, а переменные ничем от своих (непарных) кавычек не отделяются. Тут сразу же новый идиотский вопрос:
'Длинное = '.$_kill1 and 'Плоское = '.$_kill2 and 'Гибкое = '.$_kill3

Почему здесь знак равенства находится внутри строчного выражения?
То есть, он будет восприниматься не как то, что $_kill2 = «Плоское», а как часть выражения, где, допустим, если переменная $_kill2 несет в себе значение «доска», то результат будет в виде фразы «Плоское = доска».
Выходит, теперь мне задумка понятна, но в том и штука, что в вопросе не объясняется, что именно требовалось, чтоб работало. Какого результата ждешь от программы.
0
Aagira Aagira 2 года назад #
И да, Маш, я давно не видела использование оператора and вместо && ch_rolleyes Вроде бы, он задает крайне жесткие условия выбора, где шаг вправо — шаг влево — расстрел. Если хотя бы одна переменная в чем-то значение не вернет, то все вылетит с ошибкой. Так что, может быть, дело в нем?

0
Aagira Aagira 2 года назад #
Сейчас еще сыдиотничаю:
proba_l ($link, 'Hero_all', 'Существительное', ' ', 'Длинное = '.$_kill1 and 'Плоское = '.$_kill2 and 'Гибкое = '.$_kill3);

Можно ли среди аргументов функции в php писать целую фразу, ничем ее не выделяя? Например, запятой после (видела такое).
0
Мария Фомальгаут Мария Фомальгаут 2 года назад #
Спасибо, с учителем разобралась, он подсказал, как надоть. Усё заработало.

proba_l ($link, 'Hero_all', 'Существительное', ' ', 'Длинное = '.$_kill1.' and Плоское = '.$_kill2.' and Гибкое = '.$_kill3);
0
Aagira Aagira 2 года назад #
Так…
У меня вынос мозга. Серьезно.
Что выходит в результате? Часом, не фраза со словом and? Там где «плоское» и «гибкое».
0
Мария Фомальгаут Мария Фомальгаут 2 года назад #
Нет, нормальная фраза без слова and.
0
Aagira Aagira 2 года назад #
Поскольку я не понимаю твоей задумки, то, возможно, выходит другое, не то, что должно (если просто по коду судить). Но по-моему, заработало потому что вот этот самый «and» был убран в кавычки, то есть, фактически, выкинут из кода, переведен в строковое значение.
И зачем оно надо?
0
Aagira Aagira 2 года назад #
И это… загляни в скайп, пожалуйста!
0
Мария Фомальгаут Мария Фомальгаут 2 года назад #
В скайпе ответила.

Похожие темы:

Не спеша пишу повесть с лаконичным названием "42 километра". Сюжет прост и не оригинален на первый в...
15:28
6
Американские учёные 20 лет изучали влияние алкоголя на человека.В ходе 20-летнего эксперимента учёны...
09:37
2
Дамы и господа, идиотский вопрос: Кто-нибудь читал что-нибудь про Холмса и Мориарти, чтобы между ни...
– Эх, какие же вы все здесь скучные! – воскликнула смуглокожая центаврийка, залпом осуши...
20:24
28

Все представленные на сайте материалы принадлежат их авторам.

За содержание материалов администрация ответственности не несет.