试图掌握使用PDO,我正在使用一些预先制作的函数,以便在我想进行查询时更简单。第一个连接,第二个运行查询。
不幸的是,它不会让我使用dbquery()来插入行。 SELECT工作正常,似乎无法获得其他任何工作。
以下是代码:
function dbConnect()
{
global $dbh;
$dbInfo['database_target'] = "localhost";
$dbInfo['database_name'] = "mysqltester";
$dbInfo['username'] = "root";
$dbInfo['password'] = "password";
$dbConnString = "mysql:host=" . $dbInfo['database_target'] . "; dbname=" . $dbInfo['database_name'];
$dbh = new PDO($dbConnString, $dbInfo['username'], $dbInfo['password']);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$error = $dbh->errorInfo();
if($error[0] != "")
{
print "<p>DATABASE CONNECTION ERROR:</p>";
print_r($error);
}
}
function dbQuery($queryString)
{
global $dbh;
$query = $dbh->query($queryString);
$i = 0;
foreach ($query as $query2)
{
$queryReturn[$i] = $query2;
$i++;
}
if($i > 1)
{
return $queryReturn;
}
else
{
return $queryReturn[0];
}
}
答案 0 :(得分:3)
PDO::query仅适用于返回结果集的查询(例如SELECT
)
对于INSERT / UPDATE / DELETE,请参阅PDO::exec
如果您要将用户提供的数据插入到DBMS中,我强烈建议使用PDO的预准备语句功能来提供自动转义以防止SQL注入。
e.g。
<?php
$stmt = $dbh->prepare("INSERT INTO tester1 (name, age) VALUES (?, ?)");
$stmt->execute(array('James',25));