Php 用MariDB编写的语句
我在摆弄我的测试数据库,学习如何设置它。 我使用PHP和PDO对象访问我的数据库并从中获取数据。 我还使用预先准备好的语句来对付MySQL注入 这是我正在使用的代码: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
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返回一个对象,而不是关联数组。