私は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
挿入と更新で機能しているのと同じ接続であるため、データベース接続が機能していることを確認できます。