Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 返回空集的mysql_Php_Mysql - Fatal编程技术网

Php 返回空集的mysql

Php 返回空集的mysql,php,mysql,Php,Mysql,非常令人沮丧,但是mysql返回了一个空集,因为代码不存在: if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("repository", $con); $url = stripslashes($url); $url = mysql_real_escape_string($url, $con); $exists = mysql_query("SELECT url FROM si

非常令人沮丧,但是mysql返回了一个空集,因为代码不存在:

if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
  mysql_select_db("repository", $con);

$url = stripslashes($url);
$url = mysql_real_escape_string($url, $con); 
$exists = mysql_query("SELECT url FROM sites WHERE url = '$url' LIMIT 1");
 if (mysql_num_rows($exists) == 1) {
    echo "exists";
 } 
它不应该这样做,因为我已经测试了很多


该表由一列url组成,最大数据类型为varchar1000。为测试目的而存储的url是

,它只会检查MySQL是否只返回一行。查证

if (mysql_num_rows($exists) > 0)

当然,假设你正在检查这样的数据。如果您不能完全确定所传递的URL是否相同,则可能需要使用LIKE和通配符来扩大搜索范围。

这将只检查MySQL是否只返回一行。查证

if (mysql_num_rows($exists) > 0)

当然,假设你正在检查这样的数据。如果您不确定所传递的URL是否完全相同,则可能需要使用LIKE和通配符来扩大搜索范围。

以下是您要做的第一步。从查询中删除WHERE url='$url',并在使用它之前打印出mysql_num_rows$exists

这足以说明这是否是两个最有可能的问题之一:

错误的URL导致未返回任何行;或 由于数据库包含非预期的内容而导致的坏行。 根据你迄今为止的评论,前者最有可能。如果返回的行中没有where子句,则必须找出URL不正确的原因。这可能是区分大小写的问题或填充大小的问题,等等

如果,正如您在评论中提到的,like works where=not,那么我们需要查看您的数据

在数据库级别执行:

select concat('[',url,']') from sites
让我们知道输出是什么。类似地,输出代码使用的URL,如下所示:

print_r($url)
在执行mysql\u查询之前


请将这两个命令的输出附加到您的问题中。

以下是您的第一步操作。从查询中删除WHERE url='$url',并在使用它之前打印出mysql_num_rows$exists

这足以说明这是否是两个最有可能的问题之一:

错误的URL导致未返回任何行;或 由于数据库包含非预期的内容而导致的坏行。 根据你迄今为止的评论,前者最有可能。如果返回的行中没有where子句,则必须找出URL不正确的原因。这可能是区分大小写的问题或填充大小的问题,等等

如果,正如您在评论中提到的,like works where=not,那么我们需要查看您的数据

在数据库级别执行:

select concat('[',url,']') from sites
让我们知道输出是什么。类似地,输出代码使用的URL,如下所示:

print_r($url)
在执行mysql\u查询之前


请将这两个命令的输出附加到您的问题中。

我没有PHP编程经验,但不应该是从url='的站点选择url$url。'限制1
如果$url在引号内工作,请忽略此项

我没有PHP编程经验,但不应该是从url='的站点选择url$url。'限制1
如果$url在引号内工作,请忽略此选项

echo$url,然后再启动查询并确认它看起来像数据库中的数据?1。您是否对数据库执行了相同的查询?2.mysql\u num\u rows$exists返回什么?3.向我们显示由您的代码生成的确切查询。这也是问题所在…我尝试在phpmyadmin中使用此sql查询…但它仍然返回空集可能是区分大小写的问题?正如Dave所说,检查数据库中的输入和实际数据。@Praneet Sharma:好的,这是答案。在您启动查询并确认它看起来像数据库中的数据之前,echo$url?1。您是否对数据库执行了相同的查询?2.mysql\u num\u rows$exists返回什么?3.向我们显示由您的代码生成的确切查询。这也是问题所在…我尝试在phpmyadmin中使用此sql查询…但它仍然返回空集可能是区分大小写的问题?正如Dave所说,检查数据库中的输入和实际数据。@Praneet Sharma:好吧,答案是这样的。我知道数据库中只有一行……我检查了,我只是倾向于认为检查太多是许多问题的根源。不过,这可能是对字符串的相等性检查。@Praneet Sharma:。我试图在phpmyadmin中使用此sql查询……但它仍然返回空集,而我知道数据库中只有一行。您是否有符合该条件的行?如前所述,数据库中的URL和变量中的URL必须完全匹配大小写、空格、。。。如果您使用的是相等比较器。如果它们不完全相同,您将不得不使用LIKE,尽管我宁愿看到我的URL是一致的,这样您就可以实际测试它们的相等性。虽然我知道数据库中只有一行……但我检查过了,我只是倾向于将检查过多视为许多问题的根源。这可能是str上的平等性检查
尽管如此,@Praneet Sharma:。我试图在phpmyadmin中使用此sql查询…但它仍然返回空集,而我知道数据库中只有一行。您是否有符合该条件的行?如前所述,数据库中的URL和变量中的URL必须完全匹配大小写、空格、。。。如果您使用的是相等比较器。如果它们不完全相同,你必须使用LIKE,虽然我更愿意看到我的URL是统一的,所以你可以实际测试是否相等。如果where消失了,这最终会起作用……正如我上面提到的……我使用varchar1000……我应该使用varchar吗?那么这是一个区分大小写的问题。我不认为如果like在where=不起作用时起作用,那么它会区分大小写,因为like也尊重大小写@Praneet,如果你想解决这个问题,你需要开始遵循建议。我已经用确切的步骤更新了答案。@paxdiablo:我认为LIKE or=不区分大小写。这取决于所使用的排序规则,根据这一点:如果where消失了,这就起作用了……正如我上面提到的……我使用varchar1000……我应该只使用varchar吗?那么这是一个区分大小写的问题。我不认为如果like在where=not中起作用,那么它会区分大小写,因为like也尊重大小写@Praneet,如果你想解决这个问题,你需要开始遵循建议。我已经用确切的步骤更新了答案。@paxdiablo:我认为LIKE or=不区分大小写。这取决于使用的排序规则,根据这一点:查询的OP语法有效,您的语法也有效,但更麻烦。查询的OP语法有效,您的语法也有效,但更麻烦。