我是 PDO 的新手,并且已经成功地将我网站的大部分插入和更新转换为 PDO 事务,每个事务都在一个可集中访问的函数中,以实现最大程度的重用。我真的很想对SELECT
语句做同样的事情,但这似乎更难!
我期望做的是:
function getProdDetails2SaveInInvoice($data) {
global $dbh;
try {
$sth=$dbh->prepare("
SELECT
AES_DECRYPT(?, '".DBKEY,"'),
AES_DECRYPT(?, '".DBKEY,"'),
AES_DECRYPT(?, '".DBKEY,"')
FROM
products
WHERE
? ? ?
");
$sth->execute($data);
$sth->fetch(PDO::FETCH_OBJ);
return $sth;
}
catch(PDOException $e) {
echo "Something went wrong. Please report this error.\n";
file_put_contents(
$_SERVER['DOCUMENT_ROOT']."/PDOErrors.txt",
"\n\nScript name : ".SCRIPT."\nFunction name : ".__FUNCTION__."\n".
$e->getMessage(), FILE_APPEND);
throw new failedTransaction();
}
}
// Fetch additional info from invoice_products.
$data = array(
'alt_id', /* field 1 */
'prod_name', /* field 2 */
'prod_desc', /* field 3 */
'prod_id', /* where */
'=', /* operator */
$prodid /* comparison */
);
$rs = getProdDetails2SaveInInvoice($data);
不幸的是,这不起作用并返回错误,
错误:“在非对象上调用成员函数 execute()”。
我可以确认$dbh
数据库连接正在工作,因为它与用于插入和更新的连接相同。