2015-02-25 3 views
0

Больше проблемы с php, чем что-либо еще.Не передавать значение из PHP в echo

У меня действительно странная проблема. Я делаю запрос _POST от PHP, который работает для моего запроса, но когда я пытаюсь включить этот же номер в эхо, он не работает. Что происходит?

Я делаю следующее:

 $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 на запрос, даже если число явно приращением, поскольку вся запрос работает, иначе он не будет правильно извлекать данные из базы данных. Но он работает! Так почему же он не распечатывается правильно? Я сошел с ума?

EDIT: только для пояснения, запрос РАБОТАЕТ, последняя строка кода не выводит правильный $ pageNumber, хотя это число exsists, и я знаю, что , потому что запрос работал.

Это журнал ошибок 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 ('новаяПеременная'). По какой-то причине, когда я использовал запрос sql для чего-либо перед запросом, переменная php потеряла ее значение. Я не знаю, почему это было сделано, но решение было просто использовать каждую переменную один раз. Я видел, что этот вопрос выложил несколько других мест.

В частности, я указал echo "<div class = 'metadata'>".$sqlQuery."</div>"; сразу после определения $sqlQuery. До этого запрос работал, после этого запрос не работал. Я до сих пор не знаю, почему.

+0

Вы писали: * Сейчас он работает * - Вы имели в виду сказать: Он НЕ работает? Я не понимаю. –

+0

Я хотел сказать, что НЕ работает. Это было плохо. – 1N5818

ответ

1

Edit:

Причина, почему он не отображается номер страницы из-за style='display : none'

  • Либо удалите его, или сделать style='display : block'

или inline или другой метод CSS, который вы хотите использовать.

Другое дело, я заметил это слово "Аякса" в журналах ошибок.

Вам нужно будет показать, что проблема может быть и там.


Оригинальный ответ от 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}] 

согласно


Кроме того, проверьте наличие ошибок в запросе с помощью:

+0

Большое спасибо за ответ. Я вставил на почту неправильно и исправил это сейчас, но позвольте мне уточнить мою проблему. Запрос на получение данных из базы данных - РАБОТАЕТ ПРАВИЛЬНО, но когда я повторяю $ pageNumber, это не отражается на последней строке кода. Все остальное отлично работает. – 1N5818

+0

@ user3049865 Добро пожаловать. Можете ли вы сказать мне, какое значение передается для POST?Do 'var_dump ($ pageNumber);' или 'var_dump ($ _ POST ['pageNumber']);' чтобы убедиться, что значение передано. Также добавьте отчет об ошибках в начало вашего файла (ов) сразу после открытия PHP-тега , например '

+0

@ user3049865 Ваш код показывает '_POST ['pageNumber']', но вы действительно используете '$ _POST ['pageNumber'];'? –

0

Эта линия также выглядит некорректно:

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

Должно быть:

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

Спасибо за ответ. Похоже, что это тоже работает, но запрос для меня не был проблемой, обе линии работают. Не уверен, что это значит. – 1N5818

+0

@JasonMurray С двойными кавычками вы можете использовать переменные внутри строки. – lshas

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>"; 
+0

Я все еще получаю нули за все. «0 ИЛИ 0 ИЛИ 0 ИСПЫТАНИЯ МЕТАЛЛИЧЕСКИХ ДАННЫХ». Спасибо хоть. – 1N5818

Смежные вопросы