Элементарный вопрос по mysql

12
somefork
На сайте с 16.08.2008
Offline
99
968

Здравствуйте. Уже 6 часов сижу и не могу въехать, где ошибка.

Есть строка. Вот она "312147,,To_Win_Match.1". Скажите, почему запрос

select count(*) from `table` where `str`='312147,,To_Win_Match.1' возващает всегда 0?

Проверял, ошибки в строке нет. Даже пробовал хранить не строку, а мд5 от неё и мд5 и сравнивать - не помогает. Уверен, здесь какая-то тупая оплошность.

Ремонтостан (http://remontostan.com)
WZ
На сайте с 03.12.2010
Offline
44
#1

А select count(*) from `table` where `str` LIKE '312147,,To_Win_Match.1' что возвращает?

somefork
На сайте с 16.08.2008
Offline
99
#2

Извините, ошибся, когда уже сообщение составлял. Разумеется, в запросе у меня like стоит, а не =

Mad_Man
На сайте с 10.11.2008
Offline
162
#3

А если так?

select count(*) from table where str LIKE '312147,,To_Win_Match.1'

... обращаю внимание на отсутствие обратных кавычек при указании таблицы и заголовка, на тестовой БД вариант заработал только в таком виде.

somefork
На сайте с 16.08.2008
Offline
99
#4

Да, самое интересное, что в пхп май админе всё работает. И результат верный выдаёт, а при запросе из скрипта - увы. На соединение не пинайте, проверял - работает.

Алгоритм таков, что если такую запись не находит путём моей проверки, то добавляет новую. Так вот, у меня получается в таблице появляется много записей с таким значением 312147,,To_Win_Match.1

Mad_Man
На сайте с 10.11.2008
Offline
162
#5
somefork:
Да, самое интересное, что в пхп май админе всё работает. И результат верный выдаёт, а при запросе из скрипта - увы. На соединение не пинайте, проверял - работает.

Показать запрос из кода можете?

somefork
На сайте с 16.08.2008
Offline
99
#6

public function sdelana_stavka($data){

$count=mysql_result(mysql_query("select count(*) from `book_bets` where `bet_data` like '".$data."'"),0);

if ($count>0){

$this->ss=true;

} else {

$this->ss=false; //nikogda ne popadaet suda

}

}

Делал также select *, а потом смотрел на mysql_num_rows, один хрен - банан. Всё время выдаёт 0.

Разочаровывает то, что самое сложное во всём скрипте сделано. Два дня потрачено, а тут такое плёвое дело, а всё стопорит.

Mad_Man
На сайте с 10.11.2008
Offline
162
#7

Удалено к чертям, предположения ложные.

somefork
На сайте с 16.08.2008
Offline
99
#8

Уважаемый Mad_Man, спасибо Вам за помощь (без иронии и сарказма). Просто вы не в ту сторону копаете. Просто такое чувство, что вы думаете, что я не разбираюсь совсем и пытаетесь уличить меня на моих ошибках.

Если вы скопируете mysql_query("select count(*) from `book_bets` where `bet_data` like '".$data."'" в текстовой файл, то обнаружите, что те кавычки, на которые Вы указали, там есть.

Говоря, про голый селект я имел ввиду, что вместо count(*) делал также просто *, т.е. запрос выглядел вот так

$r=mysql_query("select * from `book_bets` where `bet_data` like '".$data."'");

if (mysql_num_rows($r)>0)......

Я с пхп работаю давно, не стоит искать ошибки в синтаксисе. Интересует именно почему на сервере он всегда возвращает 0.

В любом случае, спасибо за помощь. Если у Вас есть ещё идеи - поделитесь, хоть куда копать - дальше я всё сделаю сам.

siv1987
На сайте с 02.04.2009
Offline
427
#9
somefork:
Я с пхп работаю давно, не стоит искать ошибки в синтаксисе. Интересует именно почему на сервере он всегда возвращает 0.

Ни на каком сервере не возвращается ноль. Ошибка в синтаксисе, если такие данные есть. die($data) что говорит? И mysql_escape_string не помешал бы

S
На сайте с 23.05.2004
Offline
315
#10
Я с пхп работаю давно, не стоит искать ошибки в синтаксисе. Интересует именно почему на сервере он всегда возвращает 0.

Именно потому , что у вас ошибка в операторах. Ниже правильный вариант:


<?php
$rs = mysql_query("SELECT COUNT(*) AS _count FROM Table WHERE ...");
$count = mysql_result($rs, 0, '_count');
if ($count > 0) {
// ********
} else {
// *********
}
?>


Это просто подпись.
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий