Php mysql\u num\u行出错

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

我的代码正在跟踪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 * $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);