ошибка пытается получить свойство id не-объекта, но кажется, что объект имеет - PullRequest
0 голосов
/ 30 мая 2020

Я использую php в первый раз. Я просто пытаюсь получить данные из базы данных. вот мой код -

        try{
            ///try to connect with database
            $conn=new PDO("mysql:host=localhost:3306;dbname=try", "root", "abcdef12");
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        }
        catch(PDOException $ex){
            echo "error";
        }
        $mysqlcode="SELECT * FROM users";
        $ret=$conn->query($mysqlcode);
        foreach($ret as $ret1)
        print $ret1->id;

в браузере, показывающий эту ошибку: Примечание: попытка получить свойство id не-объекта в /opt/lampp/htdocs/secAsite/verifylogin.php в строке 44 4 раза. в таблице пользователей у меня есть 4 данных. здесь, почему $ ret кажется не объектом. я не могу найти ничего плохого. как получить данные. или отладить объект.

Ответы [ 3 ]

2 голосов
/ 30 мая 2020

Вы не получаете данные, потому что вы не получаете их .. вам необходимо получить данные перед их печатью обновленный код

$mysqlcode = "SELECT * FROM users";
$ret = $conn->query($mysqlcode);

if ($ret->num_rows > 0) {
  // output data of each row
  while($row = $ret->fetch_assoc()) {
    echo "id: " . $ret["id"] . "<br>";
  }
} else {
  echo "0 results";
}
$conn->close();

, который будет работать нормально.

1 голос
/ 30 мая 2020

Я проверил ваш код. Все хорошо. Просто сделай это.

         foreach($ret as $ret1)
            print $ret1['id'];
1 голос
/ 30 мая 2020

Прежде чем пытаться использовать объектно-ориентированный PHP, гораздо легче понять процедурный. Взгляните на приведенный ниже код.

Сначала подключитесь к базе данных:

<?php   
//Store log in info into variables
    $servername = 'localhost';
    $serveruser = 'youruser';
    $serverpassword = 'yourpassword';
    $serverdatabase = 'yourdatabase';

    // Create connection
    $conn = mysqli_connect( $servername, $serveruser, $serverpassword, $serverdatabase );

    if ( !$conn ) {echo "Connection Fail" . mysqli_connect_error();}
    //else {echo "Connected to database $serverdatabase";}
?>

Затем вызовите информацию из ваших database и table и сохраните ее в ассоциативном array $data

$sql = "SELECT * FROM `table`";
$result = mysqli_query($conn, $sql);
$data = mysqli_fetch_all($result, MYSQLI_ASOCC);
mysqli_free_result($result);

Теперь вы можете использовать массив для печати результатов с помощью print_r

<code>echo '<pre>'; print_r($data); echo '
';}

Теперь вы готовы используйте foreach в зависимости от столбцов таблицы, например, если у вас есть столбец ID, тогда

<?php foreach ($data as $value){
echo $value['id]."<br>";
} ?>

Он распечатает все идентификаторы. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...