PHP MySQLi запрос возвращает данные, но не отображает их - PullRequest
0 голосов
/ 02 ноября 2018

Добрый день, Я провел обширное исследование по этому вопросу, но, к сожалению, ни один из связанных вопросов не решил мою проблему.

Здесь у меня есть очень простое соединение с MySQLi DB в PHP. Соединение установлено успешно, также как и запрос к таблице. Проблема в том, что набор результатов не будет отображаться. Все мои ссылки верны, и когда я проверяю, заполнен ли набор результатов, это так. Я полагаю, что проблема связана с моим блоком while, но ошибки не возвращаются при запуске. Спасибо за ваше время

<?php
$db = mysqli_connect('localhost','root','','securitour') //connection to the         database
or die('Error connecting to MySQL server.');
?>

<html>
<head>
</head>
<body>
<?php

$query = "SELECT * FROM location"; //The SQL query
mysqli_query($db, $query) or die('Error querying database.'); 
$result = mysqli_query($db, $query); //query the table an store the result set in a     variable
$row = mysqli_fetch_array($result); //create an array and store the records of the     result set in it

if (mysqli_num_rows($result) != 0) //to check if the result set contains data
{
    echo "results found"; //THIS is what is returned.
} 
else 
{
    echo "results not found";
}
while ($row = $result->fetch_assoc()) //itterate through the array and display the         name column of each record
    {
    echo $row['name'];
    }
    mysqli_close($db);
?>
</body>
</html>

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Здесь много чего не так .

  1. Вы обрабатываете функцию mysqli_query () дважды - в этом нет необходимости.

  2. Вы выбираете все поля в своем запросе SQL (SELECT *). Вы должны выбрать поля по имени.

  3. Вы обмениваетесь между процедурой и MySQLi на основе классов - вам следует придерживаться одного или другого.

Попробуйте вместо этого:

    <?php
    $db = mysqli_connect('localhost','root','','securitour') //connection to the         database
    or die('Error connecting to MySQL server.');
    ?>

    <html>
    <head>
    </head>
    <body>
    <?php

    $query = "SELECT name FROM location"; //The SQL query
    $result = mysqli_query($db, $query) or die('Error querying database'); //query the table an store the result set in a     variable
    if(mysqli_num_rows($result) > 0){
        echo "Results found!";
        while($row = mysqli_fetch_array($result)){ //create an array and store the records of the     result set in it
            echo $row['name'];
        }
    } else {
        echo "results not found";
    }
        mysqli_close($db);
    ?>
    </body>
    </html>
0 голосов
/ 02 ноября 2018

Вам не нужно запускать mysqli_query() дважды. и вам нужно использовать mysqli_fetch_assoc для ассоциативного массива

<?php
$db = mysqli_connect('localhost','root','','securitour') or die('Error connecting to MySQL server.');
?>

<html>
<head>
</head>
<body>
<?php
$query = "SELECT * FROM location"; //The SQL query
$result = mysqli_query($db, $query) or die('Error querying database.'); //query the table an store the result set in a     variable
$row = mysqli_fetch_assoc($result); //create an array and store the records of the     result set in it

if (mysqli_num_rows($result) != 0) //to check if the result set contains data
{
    echo "results found"; //THIS is what is returned.
} else {
    echo "results not found";
}

foreach ( $row as $name=>$val) {
    echo $name . ':' . $val . '<br>';
}
mysqli_close($db);
?>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...