php - 初学php数据库查询

标签 php mysql sql

我有一个包含以下列的数据库: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/

相关文章:

sql - Postgres Select语句的列不存在

php - 计算大型数据库的结果数量

PHP/MySQL 搜索引擎,我找不到图像文件夹路径

php - 使用主页上的 session 变量来显示帐户链接

php - 获取免费IP地址的算法

php - 显示没有重复的数据并计算重复项

javascript - 基于其他输入值通过 PHP 使用 jQuery AJAX 设置表单输入值

javascript - 如何相邻打印 Fpdf MultiCell

sql - 在 Postgresql 中按窗口函数结果过滤

SQL 使用列名别名而不使用 SELECTING