不将值从PHP传递到echo

时间:2015-02-25 23:01:59

标签: php html mysql database

更多的PHP问题比什么都重要。

我有一个非常奇怪的问题。我正在从PHP执行一个_POST请求,它正在为我的查询工作,但是当我尝试将相同的数字包含在一个echo中时,它无法正常工作。发生了什么事?

我正在做以下事情:

     $pageNumber = $_POST['pageNumber'];
     $startIndex = $pageNumber*10;
     $sqlQuery = "select * from my_table id asc limit $startIndex, 10";
     // this works    

     $string = "";   
     $fetcheddata = $mysqlConnection->query($sqlQuery); 
     if($fetcheddata!=null && $fetcheddata->num_rows>0){
             while ($row = $fetcheddata->fetch_array(MYSQLI_ASSOC)){
                     $string.="<p>".$row['id'].",".$row['first_name'].",".$row['last_name']."    </p>";                          

             }               
     }     
     // this also works when I load with different data and 
     // I know this because the data from the database is of
     // the right index which means $pageNumber IS INFACT incrementing

     echo "<div class='newData'>INFO: ".$string. "</div><div id = 'dom-target' style='display    : none'>".$pageNumber."TESTING META DATA</div>";
     // but for some reason this doesn't give me the correct
     // $pageNumber, it always gives me zero. 

当我尝试将$ pageNumber回显到html时,我总是在请求上得到0,即使整个查询工作时数字明显增加,否则它不会拉从数据库正确。但它正在发挥作用!那么为什么不能正确打印出来呢?我疯了吗?

编辑:只是为了澄清,查询IS WORKING,最后一行代码没有打印出正确的$ pageNumber,即使该数字存在并且我知道因为查询有效。

这是php错误日志:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using Users-Computer.local. Set the 'ServerName' directive globally to suppress this message
[Wed Feb 25 12:58:16.260705 2015] [mpm_prefork:notice] [pid 51] AH00163: Apache/2.4.9 (Unix) PHP/5.5.14 configured -- resuming normal operations
[Wed Feb 25 12:58:16.260985 2015] [core:notice] [pid 51] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'

解决方案:

我通过使用不同的$ _POST(&#39; newVariable&#39;)找到了解决此问题的方法。出于某种原因,当我在查询之前使用$ sql查询时,php变量失去了它的值。我不知道为什么会这样做,但解决方案只是使用每个变量一次。我已经看到这个问题也发布在其他一些地方。

具体来说,我在echo "<div class = 'metadata'>".$sqlQuery."</div>";定义后立即添加了$sqlQuery。在此之前,查询有效,在此之后,查询无效。我还是不知道为什么。

3 个答案:

答案 0 :(得分:1)

修改

它没有显示页码的原因是style='display : none'

  • 删除它,或执行style='display : block'

inline或您希望使用的其他CSS方法。

另一件事,我注意到的是&#34; ajax&#34;在您的错误日志中。

你需要表明,问题也可能在那里。


original post的原始答案:

您在

中缺少$和分号
_POST['pageNumber']

将其更改为

$_POST['pageNumber'];

这是一个超级全球

然后这一行

$sqlQuery = "select * from my_table id asc limit $startIndex, 10";
                                    ^^ ^^^

您可能尝试使用ORDER BY

GROUP BYasc

因此,很难说您要对哪个列进行排序或分组。

尝试:

select * from my_table group by id asc

select * from my_table order by id asc

ORDER | GROUP BY column ASC

如果您没有订购或分组,请从查询中删除asc

SELECT
    [ALL | DISTINCT | DISTINCTROW ]
      [HIGH_PRIORITY]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr ...]
    [FROM table_references
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]

按照


另外,使用以下方法检查查询中的错误:

答案 1 :(得分:0)

此行看起来也不正确:

$sqlQuery = "select * from my_table id asc limit $startIndex, 10";

应该是:

$sqlQuery = "select * from my_table id asc limit " . $startIndex . ", 10";

答案 2 :(得分:0)

我会尝试这个,看看我从中获得了哪些值。

$pageNumber = $_POST['pageNumber'];
$startIndex = $pageNumber*10;
$sqlQuery = "select * from my_table id asc limit $startIndex, 10";

$string = "";   
$fetcheddata = $mysqlConnection->query($sqlQuery); 
if($fetcheddata!=null && $fetcheddata->num_rows>0){
        while ($row = $fetcheddata->fetch_array(MYSQLI_ASSOC)){
                $string.="<p>".$row['id'].",".$row['first_name'].",".$row['last_name']."    </p>";                          
         }               
}

echo "<div class='newData'>INFO: ".$string. "</div><div id = 'dom-target' style='display    : none'>".$pageNumber." OR ". $_POST['pageNumber'] ." OR ". $startIndex/10 . " TESTING META DATA</div>";