0

在这里搜索后,我看不到任何与我有相同(奇怪)问题的人。我有一个非常简单的任务,即检查某个名称是否已存在于表中,但问题是 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)。我不是那么有经验的程序员,起初,我以为它是从其他查询返回值,但我检查并更改了这些变量的名称,问题仍然存在。

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

4

2 回答 2

0

您的示例是基本示例,它应该可以工作。它甚至在PHP 手册中作为示例

试试这个方法:

$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?
}
于 2013-11-13T12:57:43.480 回答
0

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

当您使用 mysql 控制台时,它会将符号转换为正确的字符集。

检查字符集并整理表格和字段 cattitle。

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

编写脚本时也使用 UTF8

于 2013-11-13T13:52:56.333 回答