我目前正在尝试使用 PDO 以避免 SQL 注入,但老实说,我非常环保,我已经通过 PDO 将我的连接文件连接到数据库,但我不确定如何通过选择进行查询并显示结果在回声中
在这里,我有我的连接文件(pdoconnexpo.php):
<?php
require_once 'pdodatosexpo.php';
$dsn = "pgsql:host=$host;port=$port;dbname=$db;user=$username;password=$password";
try{
// Crear la conexion a la base de datos postgresql
$conn2 = new PDO($dsn);
// Mostrar un mensaje si la conexion es efectiva
if($conn2){
echo "Conexión a la base de datos <strong>$db</strong> Exitosa!";
}
}catch (PDOException $e){
// Reportar mensaje de error
echo $e->getMessage();
}
在这里我进行查询并尝试显示结果,我认为错误是初学者的错误。
<?php
include ('pdoconnectexpo.php');
/*
$query = "SELECT usuario FROM usuarios WHERE usuario='luis'";
$result = pg_query($query);
$row = pg_fetch_assoc($result);
if ($result){
echo $row['usuario'];
}else{
echo "error en la consulta";
}
*/
include ('pdoconnectexpo.php');
$query = 'SELECT usuario FROM "public".usuarios WHERE usuario=:usuario';
$registros = $conn2->prepare( $query ); //Preparamos la consulta
$registros->execute( array(":usuario" => $usuario) ); //Le pasamos el valor al marcador, esto es un array por lo que soporta tanto valores requiera la query, separador por coma
$registros = $registros->fetchAll( PDO::FETCH_OBJ ); //convirtiendo el resultado en objetos para poder iterar en un ciclo.
$registros[0]->usuario;
foreach ( $registros as $datos){
echo $datos->usuario;
}
?>
当您在 SQL 中使用 postgres 时,您必须在查询中包含模式,如果它在标准中没有名称,则必须用双引号括起来;
然后我们继续执行查询;
到目前为止,您已经执行了查询并将结果作为对象存储在变量
$registros
中,如果您只想访问第一条记录,可以通过以下方式进行;现在,如果您想要浏览此结果中存在的所有记录,您可以使用
foreach
;