gpt4 book ai didi

php - 使用 PDO 创建一个 mysql 查询函数,不会插入行

转载 作者:行者123 更新时间:2023-11-29 05:45:51 26 4
gpt4 key购买 nike

试图掌握使用 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];
}
}

最佳答案

PDO::query仅适用于返回结果集的查询(例如 SELECT)

对于插入/更新/删除,请参阅 PDO::exec

如果您要将用户提供的数据插入您的 DBMS,我强烈建议使用 PDO 的准备语句功能来提供自动转义以防止 SQL 注入(inject)。

例如

<?php
$stmt = $dbh->prepare("INSERT INTO tester1 (name, age) VALUES (?, ?)");
$stmt->execute(array('James',25));

参见 PDO::preparePDOStatement::execute

关于php - 使用 PDO 创建一个 mysql 查询函数,不会插入行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2196309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com