4

我有以下代码:

$statement = $mysqli->prepare("INSERT INTO `paypal_transactions` (`txn_id`, `payer_email`, `mc_gross`, `mc_currency`, `expires`, `userid`) VALUES (?, ?, ?, ?, " . (time() + 2678400) . ", ?)");
file_put_contents('error.txt', $mysqli->error . mysqli_error($mysqli));
$statement->bind_param('ssdsi', $txn_id, $payer_email, $payment_amount, $payment_currency, $userid);
$statement->execute();

error.txt 每次都是空白的,这就是我在 error_log 文件中看到的内容:

[02-Jul-2013 09:08:15 America/Denver] PHP Fatal error:  
Call to a member function bind_param() on a non-object in /home4/site/public_html/paypal.php on line 96

这是指上面的代码块。

我对此束手无策,我一直在尝试修复它几个小时,但它就是行不通。我找不到我的 sql 查询的任何问题,我正在想弄清楚什么是错的。

4

2 回答 2

3

似乎$statement = $mysqli->prepare(..)给出了结果FALSE,所以$statement不是对象,你不能使用$statement->bind_param(..)

$statement = $mysqli->prepare("...");

if( $statement !== FALSE ) {
    $statement->bind_param(...);
    $statement->execute();
}

PHP - MySQLi - 准备

顺便说一句:您是否通过复制/粘贴直接在数据库中测试您的 SQL 查询?

于 2013-07-02T16:38:03.440 回答
0

Don't use MYSQL keywords in $mysqli->prepare,for example:from,select etc. So,your datatables fields name are important!Please checking

于 2013-12-11T07:32:40.137 回答