我有一个包含以下列的数据库:ID,名称,区域。 我需要函数返回包含作为参数到达的区域的记录的名称
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;
}
答案 0 :(得分:3)
参数占位符不是变量。不要使用$zone
,只需给它加上标签即可。
$stmt = Conection::conect()->prepare("SELECT name FROM $table WHERE zone = :zone");
绑定参数所用的名称必须与在查询中用作占位符的标签相同。然后将其绑定到具有该值的PHP变量。
不要理会PDO::PARAM_STR
或其他参数类型。无论如何,MySQL PDO驱动程序会忽略这些。如果您使用其他品牌的RDBMS(Oracle,Microsoft等),它们可能更为重要。
这里不需要在参数名称中使用:
。
$stmt -> bindParam("zone", $zone);
一种替代方法是只将数组传递给execute()
。如果这样做,请跳过bindParam()
呼叫。
$stmt -> execute( ["zone" => $zone] );
提示:这全部在the documentation中说明!