|
|
|
| Помогите, пожалуйста, разобраться.
Нужно проверить, имеется ли в таблице значение (скажем, 4) при двух других значениях, которые передаются из формы.
Вот код без переменных, который работает:
$sql = 'SELECT `bane` FROM `book_bowl` WHERE dato=\'22. maj\' AND tid=12';
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if (in_array('4', $row)) {
echo "'4' found";
}
|
Но здесь значения dato и tid вписаны конкретно, вручную. Когда же я пытаюсь заменить их на переменные:
$dato = '22.maj';
$tid = 12;
$sql = 'SELECT `bane` FROM `book_bowl` WHERE dato=`$dato` AND tid=`$tid`';
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if (in_array('4', $row)) {
echo "'4' found";
}
|
то выдаёт ошибку. Я пробовала убирать кавычки и назначать дополнительные, ставить точку перед именем переменной (почему это делается, я не знаю, видела просто такой синтаксис у кого-то в SELECTе, решила попробовать методом тыка: вдруг повезёт? не повезло) - ничего не помогает. Объясните, пожалуйста, в чём тут фишка, почему не читаются переменные? Ведь без них всё работает, а остальную часть кода я не меняла | |
|
|
|
|
|
|
|
|
для: sim5
(21.05.2008 в 04:39)
| | Ссылка не открывается. Погуглила по литералам, почитала. Ничего похожего на решение моей проблемы не нашла. Ни об особенностях синтаксиса записи переменных в SELECT, ни о возможных проблемах при использовании переменных. Не могли бы вы хотя бы коротко объяснить, хотя бы в чём загвоздка? Почему при подставлении переменных вместо значений в запись запроса скрипт перестаёт работать? | |
|
|
|
|
|
|
|
для: sim5
(21.05.2008 в 04:39)
| | Ссылка не открывается. Погуглила по литералам, почитала. Ничего похожего на решение моей проблемы не нашла. Ни об особенностях синтаксиса записи переменных в SELECT, ни о возможных проблемах при использовании переменных. Не могли бы вы хотя бы коротко объяснить, хотя бы в чём загвоздка? Почему при подставлении переменных вместо значений в запись запроса скрипт перестаёт работать? | |
|
|
|
|
|
|
|
для: Angl
(21.05.2008 в 05:09)
| | Для начала, перепешите свой запрос так:
$result = mysql_query($sql) or die (mysql_error()); | |
|
|
|
|
|
|
|
для: sim5
(21.05.2008 в 05:20)
| | Сделала. Пишет в ответ: Unknown column '$dato' in 'where clause'
??? | |
|
|
|
|
|
|
|
для: Angl
(21.05.2008 в 05:28)
| | Что-то теперь мне ещё непонятнее. 'where clause' - это что? И почему он называет переменную Unknown column? | |
|
|
|
|
|
|
|
для: Angl
(21.05.2008 в 05:31)
| | Это значит, что такой колонки, которую вы запрашиваете, MySQL в таблице на нашел. Читайте синтаксис запросов, ссылка которую я давал, у вас может временно не открывалась, а ответ есть по этой ссылке. Вот адрес главной страницы того, что вам нужно знать: http://www.mysql.ru/docs/man/.
Ваш запрос надо переписать так:
$sql = "SELECT `bane` FROM `book_bowl` WHERE dato='$dato' AND tid='$tid'";
$result = mysql_query($sql) or die (mysql_error());
|
PS. Кстати, вот то, что вы вставляли вручную: dato=\'22. maj\'. Вы что, еденичные строковые значения полей в таблице держите в кавычках? Зачем? | |
|
|
|
|
|
|
|
для: sim5
(21.05.2008 в 05:47)
| | >Это значит, что такой колонки, которую вы запрашиваете, MySQL в таблице на нашел.
>Читайте синтаксис запросов, ссылка которую я давал, у вас может временно не
>открывалась, а ответ есть по этой ссылке. Вот адрес главной страницы того, что вам нужно >знать: http://www.mysql.ru/docs/man/.
Ссылки до сих пор не работают :-(. Но буду продолжать щёлкать время от времени, в надежде, что откроются. Теорию-то почитать хочется! :-)
>Ваш запрос надо переписать так:
>
$sql = "SELECT `bane` FROM `book_bowl` WHERE dato='$dato' AND tid='$tid'";
>$result = mysql_query($sql) or die (mysql_error());
>
|
Спасибо большое, тепрь всё работает!!
>PS. Кстати, вот то, что вы вставляли вручную: dato=\'22. maj\'. Вы что, еденичные строковые
>значения полей в таблице держите в кавычках? Зачем?
А это не я. Эту строчку выдал phpMyAdmin, когда я проверяла запрос на работоспособность. Я просто скопировала так, как он откорректировал. Кстати, сейчас проверила: без кавычек вокруг '22. maj' выдаёт ошибку. А 12 без кавычек проходит нормально. В самой таблице все значения стоят без кавычек. | |
|
|
|
|
|
|
|
для: Angl
(21.05.2008 в 12:41)
| | Строковые переменные в запросе надо обрамлять кавычками ('' или ""), для чисел нет. | |
|
|
|
|
|
|
|
для: Angl
(21.05.2008 в 04:28)
| | Я опять - с тем же скриптом, но с другой проблемой. С переменными и кавычками я вроде как разобралась, и скрипт заработал. Но радовалась я рано.
Идея была такая: сделать выборку значений одной колонки (не повторяются), а среди них потом поискать нужное число. Пробовала так (скрипт уже был выше, просто ещё раз приведу, для наглядности):
$sql = "SELECT `bane` FROM `book_bowl` WHERE dato='12. juni' AND tid='14'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if (in_array('6', $row)) {
echo "'6a' found";
}
|
Как оказалось, скрипт работал, потому что на тот момент в полученном из таблицы массиве было только одно значение. Как только появились другие, начались проблемы: он видел только первое, дальше искать не хотел. Я промучилась сутки, дошла до истерики, и написала в конце концов дубовый скрипт, который делал каждый раз новый запрос на конкретное значение. Всё работает прекрасно. Но проблема в том, что таблица-то сейчас маленькая, незаполненная. А если разрастётся, то будет работать медленно. То есть на первое время сойдёт то, что я сваяла, но потом надо всё равно переделывать.
Не объясните мне, пожалуйста, что у меня не так? Почему скрипт не видит в массиве дальше первого значения? И может, есть какой-нибудь способ перевести его в строку и тогда уже порыться в нём через eregi(), скажем? Или я усложняю, и всё гораздо проще, просто я не в курсе? Подскажите, пожалуйста! | |
|
|
|
|
|
|
|
для: Angl
(26.05.2008 в 03:33)
| | цикл?
<?php
while ($row = mysql_fetch_array($result)) {
...
}
?>
|
| |
|
|
|