2013-11-13 3 views
0

После поиска здесь я не видел никого с той же (странной) проблемой, что и я. У меня очень простая задача - проверить, существует ли какое-либо имя в таблице, но дело в том, что mysql_num_rows возвращает неправильные значения.mysql_num_rows() неверно возвращает значение

Извините, я забыл упомянуть, что это происходит только тогда, когда я пытаюсь искать слова со специальными символами.Bebês, Câmeras, Calção являются примерами.

$sql = " 
    SELECT cattitle as category 
    FROM categories 
    WHERE cattitle = '$title' 
"; 
$res = mysql_query($sql, $con) or die(mysql_error()); 
$num = mysql_num_rows($res); 

Я даже пытался с mysql_result

$sql = " 
    SELECT count(cattitle) as category 
    FROM categories 
    WHERE cattitle = '$title' 
"; 
$res = mysql_query($sql, $con) or die(mysql_error()); 
$num = mysql_result($res,0); 

Худшая вещь, когда я запускаю запрос непосредственно, я получить правильные результаты ($ число> 0). Я не тот опытный программист, и, во-первых, я думал, что он возвращает значения из других запросов, но я проверил и изменил название этих vars, и проблема осталась.

Может быть, какой-то конфликт? Может кто-нибудь помочь мне с этой ошибкой? С уважением,

+0

Перед тем, как продолжить, получить более современную книгу о PHP, код более 5 лет позади. – Marek

ответ

0

Ваш пример является основным, и он должен работать. Это даже в PHP manual as example.

Попробуйте так:

$sql = " 
    SELECT cattitle 
    FROM categories 
    WHERE cattitle = '$title' 
    LIMIT 1 
"; 
$res = mysql_query($sql, $con) or die(mysql_error()); 
if ($row = mysql_fetch_assoc($res)) { 
    # category already exists, do smth? 
} 
+0

Извините, я забыл упомянуть, что это происходит только тогда, когда я пытаюсь искать слова со специальными символами. Когда я ищу «обычные» символы, мои примеры работают отлично (так же как и ваши). –

+0

@GabrielSoaresMiranda: тогда у вас, вероятно, есть проблема с кодировкой, посмотрите на эту ссылку> http://stackoverflow.com/questions/279170/utf-8-all-the-way-through –

0

Я думаю, ваша проблема может быть в неправильных кодировках для вашей базы данных MySQL и строки в вашем PHP скрипте.

Когда вы используете консоль mysql, тогда она преобразует символы в правильную кодировку.

Проверьте кодировку и сопоставьте таблицу для вашего стола и поля.

Лучшее решение изменит его UTF8

также использовать UTF8, когда написать сценарий

Смежные вопросы