更多的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
。在此之前,查询有效,在此之后,查询无效。我还是不知道为什么。
答案 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 BY
或asc
因此,很难说您要对哪个列进行排序或分组。
尝试:
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>";