在穿越PHP:数据对象的丛林中,我遇到了通过准备好的语句执行MySQL查询的问题。
观察以下代码:
$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();
这就是我,我想进入我的数据库。但是我一直迷路在..好吧..我不知道!根据谷歌,这是做到这一点的方法,尽管我的数据库仍然是空的。
我在这里想念什么吗?因为我已经被困了一个小时,所以我想继续学习PDO!
你应该像这样使用它
<?php
$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 (:fname, :sname, :age)');
$statement->execute([
'fname' => 'Bob',
'sname' => 'Desaunois',
'age' => '18',
]);
准备的语句用于清理您的输入,并且您可以在SQL中使用这些语句:foo
而无需 任何单引号来 绑定
变量,然后在execute()
函数中传递在SQL语句中定义的变量的关联数组。
您也可以使用?
代替,:foo
然后像这样传递仅输入值的数组;
$statement = $link->prepare('INSERT INTO testtable (name, lastname, age)
VALUES (?, ?, ?)');
$statement->execute(['Bob', 'Desaunois', '18']);
两种方式都有其优点和缺点。我个人更喜欢绑定参数名称,因为它更易于阅读。