|
|
|
| $n = "SELECT * FROM `stats` WHERE `name` LIKE '$name'"
Какие значения может принимать перменная $n в зависимости от того, есть ли $name в поле 'name' таблицы 'stats'? | |
|
|
|
|
|
|
|
для: Zhenya1992
(22.04.2007 в 12:55)
| | содержание этого(их) поля(ей) или ничего | |
|
|
|
|
|
|
|
для: bronenos
(22.04.2007 в 13:00)
| | Мне нужно чтобы когда таких полей нет выполнялись одни операции, а если есть то другие. Как написать условие? | |
|
|
|
|
|
|
|
для: Zhenya1992
(22.04.2007 в 13:34)
| | Определить наличие полей в результирующей таблице можно при помощи функции mysql_num_rows() - посмотрите пост ниже. | |
|
|
|
|
|
|
|
для: Zhenya1992
(22.04.2007 в 12:55)
| | Переменая $n ничего кроме строки запроса содержать не будет, запрос сначала следует выполнить и получить результат. | |
|
|
|
|
|
|
|
для: cheops
(22.04.2007 в 13:33)
| | Выпоолнять через mysql_query($n) ? | |
|
|
|
|
|
|
|
для: Zhenya1992
(22.04.2007 в 13:34)
| | Да, затем следует получать дескриптор, проверять его на наличие ошибок и наличие записей в таблице
<?php
$n = "SELECT * FROM `stats` WHERE `name` LIKE '$name'";
$sts = mysql_query($n);
if(!$sts) exit("Ошибка ".mysql_error());
// Если имеется хотя бы одна запись
if(mysql_num_rows($sts))
{
while($stats = mysql_fetch_array($sts))
{
echo "<pre>";
print_r($stats);
echo "</pre>";
}
}
else
{
echo "Не обнаружено ни одной записи";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(22.04.2007 в 13:49)
| | Спасибо. Попробовал всё работает.
Только не совсем понятно что делает строка if(!$sts) exit("Ошибка ".mysql_error()); | |
|
|
|
|
|
|
|
для: Zhenya1992
(26.04.2007 в 16:57)
| | Поскольку в запрос входит переменная, в нем запросто может возникнуть ошибка. эта строка прекращает выполнение скрипта и выдает диагностику, если такое произошло. | |
|
|
|
|
|
|
|
для: Zhenya1992
(22.04.2007 в 12:55)
| | >$n = "SELECT * FROM `stats` WHERE `name` LIKE '$name'"
>Какие значения может принимать перменная $n в зависимости от того, есть ли $name в поле 'name' таблицы 'stats'?
Запрос, который вы описали словами, задается несколько по-другому:
$n = "SELECT COUNT(*) FROM `stats` WHERE `name` LIKE '$name'";
Разница очевидна:
1 - вынуть из таблицы все строки, удовлетворяющие условию.
2 - получить одну строку, одно поле: число, равное количеству строк в таблице, удовлетворяющих условию.
первый запрос может вернуть ни одной строки, а может вернуть и миллиард.
второй вернет строго одно число, отвечающее на вопрос. | |
|
|
|
|
|
|
|
для: Trianon
(22.04.2007 в 21:06)
| | $f = "SELECT COUNT * FROM `stats` WHERE `name` LIKE '$name'";
$n=mysql_query($f);
if ($n==0) ...
Даже когда я ввожу переменную $name которая есть в таблице, то всё равно срабатывает ветка верно. Т.е. n=0 всегда. | |
|
|
|
|
|
|
|
для: Zhenya1992
(25.04.2007 в 13:11)
| | Потому что mysql_query возвращает дескриптор запроса, а он, если запрос корректен, всяко будет оценен как не нуль.
Пишите так:
$f = "SELECT COUNT * FROM `stats` WHERE `name` LIKE '$name'";
$n=intval(mysql_result(mysql_query($f), 0));
if ($n==0) ...
|
| |
|
|
|
|
|
|
|
для: Trianon
(25.04.2007 в 14:42)
| | Копировал Ваш код, выдало ошибку
mysql_result(): supplied argument is not a valid MySQL result resource in ...
При этом срабатывает ветка "верно" всё равно. | |
|
|
|
|
|
|
|
для: Zhenya1992
(26.04.2007 в 16:44)
| | Это в Вашем коде была ошибка, а я не заметил, когда скопировал. Звездочку нужно взять в круглые скобки именно так, как я написал в (22.04.2007 в 21:06) | |
|
|
|
|
|
|
|
для: Trianon
(26.04.2007 в 16:47)
| | Да, действительно, попробовал - работает. Большое спасибо за помощь. | |
|
|
|