Php 使用PDO创建mysql查询函数,不会插入行
试图掌握PDO的使用,我正在使用一些预先制作的函数来简化查询。第一个连接,第二个运行查询 不幸的是,它不允许我使用dbquery()插入行。选择工作很好,只是似乎无法让任何其他工作 代码如下:Php 使用PDO创建mysql查询函数,不会插入行,php,mysql,pdo,Php,Mysql,Pdo,试图掌握PDO的使用,我正在使用一些预先制作的函数来简化查询。第一个连接,第二个运行查询 不幸的是,它不允许我使用dbquery()插入行。选择工作很好,只是似乎无法让任何其他工作 代码如下: function dbConnect() { global $dbh; $dbInfo['database_target'] = "localhost"; $dbInfo['database_name'] = "mysqltester"; $dbInfo['username'] =
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];
}
}
函数dbConnect()
{
全球$胸径;
$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=新PDO($dbConnString,$dbInfo['username'],$dbInfo['password']);
$dbh->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
$error=$dbh->errorInfo();
如果($error[0]!=“”)
{
打印“数据库连接错误:”;
打印错误($error);
}
}
函数dbQuery($queryString)
{
全球$胸径;
$query=$dbh->query($queryString);
$i=0;
foreach($query作为$query2查询)
{
$queryReturn[$i]=$query2;
$i++;
}
如果($i>1)
{
返回$queryReturn;
}
其他的
{
返回$queryReturn[0];
}
}
仅适用于返回结果集的查询(例如选择
)
有关插入/更新/删除,请参见
如果要将用户提供的数据插入到DBMS中,我强烈建议使用PDO的prepared statement功能提供自动转义以防止SQL注入
e、 g
那么使用这样的方法$dbh->exec(“插入tester1(姓名、年龄)值('James',25)”);对虽然我强烈建议在相关的时候使用预先准备好的语句,但它们会为您处理好逃逸。我将更新我的答案以反映这一点。谢谢。预处理语句阻止sql注入?从本质上讲,预处理语句向DB提交两件事。首先是语句,它不填充用户输入。然后它分别提交变量。通过将两者分开,人们无法将sql代码放入插入中。它对于防止SQL注入攻击非常有用!
<?php
$stmt = $dbh->prepare("INSERT INTO tester1 (name, age) VALUES (?, ?)");
$stmt->execute(array('James',25));