因此,我合法地开始阅读有关PDO和PDO statemnts的信息,以更新我的代码并提供更高的安全性,但是我真的不知道这样做是否可行或是否可以进行注入。在制作阵列之前,我还清理了数据。我做了这个功能o在给定名称表的情况下添加数据,并添加具有列名称和值的数组
$tabla = 'tabla'
$datos = array(
'id' => 'NULL',
'id_usuario' => "'{$usuario['id']}'",
'id_tipo' => "'{$tipo}'",
'id_estado' => "'{$estado}'",
'id_visibilidad' => "'{$visibilidad}'",
'titulo' => "'{$titulo}'",
'contenido' => "'{$contenido}'",
'fecha' => 'CURRENT_TIMESTAMP'
);
function pdo_agregar($tabla, $datos) {
global $pdo;
$columnas = implode(', ', array_keys($datos));
$valores = implode(', ', array_values($datos));
$sentencia = $pdo->prepare("INSERT INTO $tabla ($columnas) VALUES ($valores)");
foreach($datos as $indice => $valor) {
$sentencia->bindParam(':'.$indice, $valor);
}
if($sentencia->execute()) {
return true;
} else {
return false;
}
$sentencia->close();
$pdo->close();
}
这样可以吗? o我是否必须发表类似的声明
$ sentencia = $ pdo-> prepare(“ INSERT INTO $ tabla(col,col2,col3) 值(:col,:col2,:col3“);
然后分别绑定参数?
谢谢!
答案 0 :(得分:2)
您不需要这种绑定的东西,您可以将数组直接抛出到pdo的执行函数(该函数为您执行绑定)
我的数组跟随[[data] =>“ mydata”,“ data2” =“ mysecond”],因此它将生成一个查询,例如“ INSERT INTO Tab
(data
,{{1 }})值(:data,:data2)“;
data2
顺便说一句,您应该使用此类,而不是全局类