首页 > 后端开发 > php教程 > 如何正确使用带有 PDO 的预准备语句进行 MySQL INSERT 查询?

如何正确使用带有 PDO 的预准备语句进行 MySQL INSERT 查询?

Patricia Arquette
发布: 2024-11-24 22:43:15
原创
855 人浏览过

How to Properly Use Prepared Statements with PDO for MySQL INSERT Queries?

使用带有 PDO 的预准备语句执行 MySQL INSERT 查询

在 PHP 数据对象 (PDO) 领域,尝试执行 MySQL INSERT 查询时可能会遇到困难通过准备好的语句执行 SQL 查询。一个常见问题涉及使用 INSERT INTO 语句向数据库添加记录。

考虑以下代码:

$dbhost = "localhost";
$dbname = "pdo";
$dbusername = "root";
$dbpassword = "845625";

$link = new PDO("mysql:host=$dbhost;dbname=$dbname","$dbusername","$dbpassword");

$statement = $link->prepare("INSERT INTO testtable(name, lastname, age)
        VALUES('Bob','Desaunois','18')");

$statement->execute();
登录后复制

此代码尝试将新记录插入到 testtable 表中MySQL 数据库。但是,数据库仍然是空的。

要解决此问题,您需要使用参数化查询,而不是直接将值嵌入到 SQL 语句中。参数化查询使用占位符 (?) 或命名参数 (:parameter) 来表示值,然后在执行期间将其绑定到实际值。这种方法可以防止 SQL 注入攻击并确保数据验证。

使用 INSERT INTO 准备好的语句的正确方法如下:

$dbhost = 'localhost';
$dbname = 'pdo';
$dbusername = 'root';
$dbpassword = '845625';

$link = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbusername, $dbpassword);
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$statement = $link->prepare('INSERT INTO testtable (name, lastname, age)
    VALUES (:fname, :sname, :age)');

$statement->execute([
    'fname' => 'Bob',
    'sname' => 'Desaunois',
    'age' => '18',
]);
登录后复制

通过使用参数化查询,您可以保护您的应用程序免受恶意输入并确保您的数据完整性。

以上是如何正确使用带有 PDO 的预准备语句进行 MySQL INSERT 查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板