mysql_num_rows()没有正确返回值

时间:2013-11-13 12:55:34

标签: php

在这里搜索后,我看不到任何人和我有同样(奇怪)的问题。 我有一个非常简单的任务,就是检查表上是否已存在某个名称,但问题是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);

最糟糕的是,当我直接运行查询时,我得到了正确的结果($ num> 0)。 我不是那个经验丰富的程序员,起初我以为它是从其他查询中返回值,但我检查并更改了这些变量的名称并且问题仍然存在。

可能是某种冲突吗?有人可以帮我解决这个错误吗? 亲切的问候,

2 个答案:

答案 0 :(得分: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?
}

答案 1 :(得分:0)

我认为您的问题可能出在mysql数据库的错误字符集和PHP脚本中的字符串中。

当你使用mysql控制台时,它会在正确的字符集中转换符号。

检查字符集并整理您的表格和字段字幕。

最佳解决方案将其更改为UTF8

编写脚本时也使用UTF8