Как считать во время цикла вывода PHP SQL

0

Le решение

Я приехал сюда с помощью Brian и W3Schools

Это мусор, он не работает... Я не могу вывести цикл в определенное место ahhh

$rows2 = array();
while($stmt->fetch()){
echo $date.'<br>'.$stratoparse.'<br>'.'<br>';
$rows2[] = $stratoparse;
$rows3[] = $date;
}

for($i=0;$i<=$num_rows;$i++){
echo $rows3[$i].'&nbsp;'.$rows2[$i].'<br>'.'<br>';
}

выходы

01-05-2015 образец 3

01-05-2015 образец 2

Пример 01-05-2015

01-05-2015 образец 3

01-05-2015 образец 2

Пример 01-05-2015

Начальная должность

Поэтому я пытаюсь сохранить вывод запроса цикла while. В отдельном файле.php цикл while выводит данные в порядке. Но когда я пытаюсь сохранить его, например. запустите цикл POST, например. запись поиска, цикл while не "выполняется должным образом", как в автономном скрипте. Я предоставлю обе части кода.

То, что я пытаюсь сделать, - подсчитать количество столбцов, удовлетворяющих запросу SELECT, зная, что я буду использовать диапазон (1, этот номер) для хранения вывода while... если есть более простой более прямой подход, который быть большим также.

Это автономный код, а не полный выбор. Он работает, строки отображаются в порядке убывания.

То, что кажется орфографическими ошибками, не является орфографическими ошибками, информация о доступе к серверу имеет имя пользователя одной рукой, поэтому я дифференцирован с использованием двух r.

<?php
$stmt=$link->prepare('SELECT stratoparse,date FROM stock WHERE user=? AND keyphrase=? ORDER BY ID DESC');
$stmt->bind_param('ss',$userrname,$keyphrase);
$stmt->execute();

$stratoparse=null;
$date=null;
$stmt->bind_result($stratoparse,$date);

while($stmt->fetch()){
echo $date.'<br>'.$stratoparse.'<br>'.'<br>';
}
?>

Это код, который я пытаюсь использовать, мне действительно не нужно размещать вторую часть. Вышеприведенный код будет вызван событием POST, а затем вывод будет сохранен и отражен в HTML файле

Я пытаюсь применить это решение, найденное в stackoverflow, а также

$store_array = range( 1, 5);

$i = 1; 
$store_array = array();
while( $i <= 5)
{
     $store_array[] = $i;
     $i++;
}

ОБНОВИТЬ

Это результат, когда я запускаю тестовый.php файл

01-05-2015 образец 3

01-05-2015 образец 2

Пример 01-05-2015

010

Вы можете видеть, что два num_rows, отобранные эхом, равны 0, 1 между ними - bool (true), я думаю, когда я эхо $stmt-> execute();

Это код за вычетом регистрационной информации

$link = new mysqli("$servername", "$username", "$password", "$dbname");
$link2 = new mysqli("$servername", "$username", "$password", "$dbname");

$stmt=$link->prepare('SELECT stratoparse,date FROM stock WHERE user=? AND keyphrase=? ORDER BY ID DESC');
$stmt->bind_param('ss',$userrname,$keyphrase);
$stmt->execute();
$num_rows = $stmt->num_rows;
$stratoparse=null;
$date=null;
$stmt->bind_result($stratoparse,$date);
while($stmt->fetch()){
echo $date.'<br>'.$stratoparse.'<br>'.'<br>';
}


echo $num_rows;

$stmt2=$link2->prepare('SELECT COUNT(keyphrase) FROM stock WHERE user=? AND keyphrase=?');
$stmt2->bind_param('ss',$userrname,$keyphrase);
echo $stmt->execute();
$stmt2->bind_result($keyphrase);
$num_rows2 = $stmt2->num_rows;

echo $num_rows2;
  • 0
    В вашем коде все еще отсутствует функция $ stmt-> store_result () после выполнения и до назначения $ num_rows для $ stmt-> num_rows.
Теги:
count
binding
parameters

1 ответ

0
Лучший ответ

Предполагая, что вы имеете в виду количество строк, а не количество столбцов, нет необходимости в цикле while - вы можете получить количество строк, возвращаемых непосредственно из оператора SQL:

$stmt->store_result();
$num_rows = $stmt->num_rows;
$stmt->close();

Количество столбцов, которые вы уже знаете из запроса SELECT.

EDIT: основываясь на ваших комментариях ниже, вы хотите сохранить результаты своего запроса позже. К сожалению, используя подготовленные заявления, он несколько грязнее, чем стандартный результат msyql. Вы можете увидеть некоторые примеры в документе для bind_result, но основная идея такова:

$rows = array();
while ($stmt->fetch()) {
    $rows[] = array('key1'=>$field1, 'key2'=>$field2, ...);
}

Конечно, не полный код, но как только вы его исчерпаете, вы получите массив строк, где каждый элемент является строкой как ассоциативный массив, подобно тому, как вы получите функцию fetch_assoc() результата mysql.

  • 0
    Выход равен нулю. Да, я имел в виду количество строк, извините за это. Я попытался использовать num_rows для операторов SELECT stratoparse, date и SELECT COUNT (ключевая фраза), оба выводили ноль.
  • 0
    Затем проверьте свой оператор SELECT - вполне вероятно, что он не вернул ни одной строки с введенным вами вводом. Например, если вы запрашиваете пароли, обычно вы извлекаете пароль из базы данных, а затем сравниваете его с паролем в POST с помощью PHP password_verify us2.php.net/manual/en/function.password-verify.php
Показать ещё 16 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню