Php mysql\u num\u行出错
我的代码正在跟踪iam,在“警告:mysql_num_rows():提供的参数不是有效的mysql结果资源…”上出现错误。请帮助我解决此问题Php mysql\u num\u行出错,php,mysql-num-rows,Php,Mysql Num Rows,我的代码正在跟踪iam,在“警告:mysql_num_rows():提供的参数不是有效的mysql结果资源…”上出现错误。请帮助我解决此问题 <?php $type = $_REQUEST['type']; #defauts $maxRows_p = 10; $pageNum_p = 0; if (isset($_GET['pageNum_p'])) { $pageNum_p = $_GET['pageNum_p']; } $startRow_p = $pageNum_p * $ma
<?php
$type = $_REQUEST['type'];
#defauts
$maxRows_p = 10;
$pageNum_p = 0;
if (isset($_GET['pageNum_p'])) {
$pageNum_p = $_GET['pageNum_p'];
}
$startRow_p = $pageNum_p * $maxRows_p;
$limit = ' LIMIT '.$startRow_p.', '.$maxRows_p;
//BUILD Addition Search Conditions
if(isset($_REQUEST['district']) && ($_REQUEST['district'] != 'All'))
$search = ' district = '.$_REQUEST['district'];
if(isset($_REQUEST['city']) && ($_REQUEST['city'] != 'All'))
$search = ' city = '.$_REQUEST['city'];
$search= ' availibility = "0" ';
$searchStr = @implode(' and ',$search);
$sql = 'select * FROM properties WHERE type= "'.$type.'" and ';
$sql .= $searchStr;
## DEBUGi
//if($debugP) echo 'Zip Code Radius SQL<hr>'.$sql;
//Add column sorting
if($_REQUEST['sort'] != '')
$sort = ' order by added asc ';
else
$sort = $_REQUEST['sort'];
### DEBUG
if($debugP) echo 'Advanced Search Sql<hr>'.$sql;
$error['Results'] = 'Sorry no properties found.';
### Finished Building search sql and execting #####
$sql_with_limit = $sql . $sort . $limit;
if($debugP)
echo "<hr>Property Search with Limit SQL: $sql_with_limit";
//Perform search
$searchResults = mysql_query($sql.$sql_with_limit);
### BUILD OUTPUT ####
if (isset($_GET['totalRows_p'])) {
$totalRows_p = $_GET['totalRows_p'];
} else {
if($debugP)
echo "<hr>Property with out limit SQL: $sql $sort";
$all_p = mysql_query($sql.$sort);
$totalRows_p = mysql_num_rows($all_p); //$totalRows_p = mysql_num_rows($all_p);
if($debugP)
echo "<br>Result Rows $totalRows_p";
}
$totalPages_p = ceil($totalRows_p/$maxRows_p)-1;
if($debugP)
echo "<hr>Builting Query String for Limit: ";
//Build query string
foreach($_GET as $name => $value){
if($name != "pageNum_p")
$queryString_p .= "&$name=$value";
}
if($debugP)
echo $queryString_p;
?>
这可能是因为MySQL无法处理提供的SQL语句。 尝试将mysql_查询行更改为以下内容,以便获得一些调试信息, 请尝试下面的代码进行查询
$all_p = mysql_query($sql.$sort) or die('Query failed: ' . mysql_error() . "<br />\n$sql");
$all\u p=mysql\u查询($sql.$sort)或die('query failed:'.mysql\u error()。“
\n$sql”);
塔克斯 我认为你的问题在于:
$all_p = mysql_query($sql.$sort);
$totalRows_p = mysql_num_rows($all_p);
从消息中获得的$all\p不是有效的资源。这可能是由于您传递的查询中存在错误
你试过这样做吗
$all_p = mysql_query($sql.$sort);
if ($all_p !== false){
$totalRows_p = mysql_num_rows($all_p);
}
如果您没有看到任何警告,那么您的查询有问题,应该对此进行调试。尝试在mysql中执行您的查询,并查看是否返回任何结果。当您需要数组分配时,您正在对
$search
使用直接分配。这意味着当你去内爆它时,它可能会返回false(??我从来没有抑制过内爆警告。我不知道它会做什么。)。这在附加到$sql时被误读。然后将$sort和$limit附加到$sql,然后在调用mysql\u查询之前再次预先添加$sql。您也没有检查$\u REQUEST['city']和$\u REQUEST['destination']是否有值
您的最终结果(更糟的情况):
您的最终结果(最佳情况):
在顶部添加以下内容:
$search = array();
然后,每当您想追加$search
:
$search[] = ' district = '.$_REQUEST['district'];
并替换此行$searchResults=mysql\u query($sql.$sql\u带\u limit)代码>带有:
$searchResults = mysql_query($sql_with_limit);
顺便说一句,你在乞求SQL注入。无论何时从$\u REQUEST
中提取值,您都应该使用mysql\u real\u escape\u string
祈祷,您不会得到来自的访问。这段代码强调SQL注入。另外,请在mysql\u query()
之后查阅。您似乎试图将“$search”变量用作数组。。。但它实际上是一个变量。。。。所以内爆不应该起作用,这可能是问题的根源。将$search替换为$search[]我尝试替换您的subjection,但现在没有显示任何结果,这意味着您的查询有错误。在这里,您可以回显您的查询:echo“
带有超限SQL的属性:$SQL$sort”
您是否尝试将查询运行到mysql?如果您运行查询,您在mysql中没有结果?能否显示您的问题?我收到以下错误查询失败:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行的“”附近使用的正确语法,从type=“0”和ok中的属性中选择*。我想我知道了,您的查询是从type=“0”中的属性中选择*但在“and”之后,您为ORDER BY语句放置了$sort变量。因此,对于ORDER BY语句,您不需要在type=“0”之后放置and…只需删除'and',然后重试..如果要将搜索变量放在where条件之后,则只需将and放在该字符串中。where条件之后不在此处..thx.我尝试过,没有错误始终显示“显示:99个列表中的1到10个”当搜索表单时,它也不会显示结果。您可以向我提供已执行的完整查询吗。?只要回显您的查询并发送给我…如果有错误,我会尽力纠正。
$search[] = ' district = '.$_REQUEST['district'];
$searchResults = mysql_query($sql_with_limit);