Php 用MariDB编写的语句

Php 用MariDB编写的语句,php,mysql,mariadb,Php,Mysql,Mariadb,我在摆弄我的测试数据库,学习如何设置它。 我使用PHP和PDO对象访问我的数据库并从中获取数据。 我还使用预先准备好的语句来对付MySQL注入 这是我正在使用的代码: mainframe(); function mainframe(){ $connection = establishConnectionToDatabase(); $result = getData($connection); //var_dump($result); //echo json_encode($re

我在摆弄我的测试数据库,学习如何设置它。 我使用PHP和PDO对象访问我的数据库并从中获取数据。 我还使用预先准备好的语句来对付MySQL注入

这是我正在使用的代码:

mainframe();

function mainframe(){
  $connection = establishConnectionToDatabase();
  $result = getData($connection);
  //var_dump($result);
  //echo json_encode($result);
  echo $result;
}

function getData($connection){
  $fetch = $connection->prepare("SELECT * FROM users_tbl");
  $fetch->execute();
  $result = $fetch->fetchAll(PDO::FETCH_ASSOC);

  return $result;
}

function establishConnectionToDatabase(){
  try
  {
     $connection = new PDO('mysql:host=localhost;dbname=foundationtests',
           'verwalter','test');
      }
  catch(PDOException $e)
  {
        echo $e->getMessage();
  }

  return $connection;
}
Im访问的表如下所示(请参见屏幕截图):

当执行上述代码时,我只返回


注意:第12行D:\foundationtests\src\assets\php\test.php中的数组到字符串转换
排列


我已经在没有准备陈述的情况下试过了,而且成功了。我不知道我遗漏了什么。

你的查询很好,你不能回显数组

在返回数组时,请尝试以下操作

function getData($connection){
  $fetch = $connection->prepare("SELECT * FROM users_tbl");
  $fetch->execute();
  $result = $fetch->fetchAll(PDO::FETCH_ASSOC);

  return (object)$result;
}
这将作为对象返回您的值。然后,您可以使用
$result->user\u id
返回任何值,例如

您可以了解有关对象的更多信息

更新


正如已经指出的,您也可以通过更改第4行,使其作为对象返回,从
$result=$fetch->fetchAll(PDO::fetch_ASSOC)
$result=$fetch->fetchAll(PDO::fetch_OBJ)
,然后将最后一行改回
return$result

它与准备好的语句无关
$result
是一个数组,您不能回显数组。但是,您可以将它们转储到var_中,很明显您之前已经在其中,然后注释掉……为什么?@misorude谢谢!嗯,我现在非常困惑,因为我过去通过echo json_encode($data);,回显了很多数组,在另一个工具中。但是在那里,我没有使用准备好的语句来获取那里的数据,所以可能这与此有关?你不能直接回显数组。json_encode接受一个数组作为其输出。要输出一个标准数组,您需要使用print_r()或var_dump()“因为我过去通过echo json_encode($data)回显了很多数组”-然后您实际上没有回显数组,而是回显了字符串,因为这是json_encode返回的。或者您可以要求PDO返回一个对象,而不是关联数组。