我有一个包含以下列的数据库:id、name、zone。 我需要函数返回包含作为参数到达的区域的记录的名称
static public function mdlShowName($table, $zone){
$stmt = Conection::conect()->prepare("SELECT name FROM $table WHERE zone = :$zone");
$stmt -> bindParam(":name", name, PDO::PARAM_STR);
$stmt -> execute();
return $stmt -> fetch();
$stmt-> close();
$stmt = null;
}
最佳答案
参数占位符不是变量。不要使用$zone
,只是给它一个标签。
$stmt = Conection::conect()->prepare("SELECT name FROM $table WHERE zone = :zone");
您绑定(bind)参数的名称必须与您在查询中用作占位符的标签相同。然后将其绑定(bind)到具有该值的 PHP 变量。
不要为 PDO::PARAM_STR
或其他参数类型而烦恼。 MySQL PDO 驱动程序无论如何都会忽略这些。如果您使用其他品牌的 RDBMS(Oracle、Microsoft 等),它们可能更重要。
此处参数名中不需要:
$stmt -> bindParam("zone", $zone);
另一种方法是将数组传递给 execute()
。如果这样做,则跳过 bindParam()
调用。
$stmt -> execute( ["zone" => $zone] );
提示:这一切都在 the documentation 中解释。 !
关于php - 初学php数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55407290/