函数不起作用:PHP 致命错误:在布尔值上调用成员函数 bind_param()
Posted
技术标签:
【中文标题】函数不起作用:PHP 致命错误:在布尔值上调用成员函数 bind_param()【英文标题】:Function not working: PHP Fatal error: Call to a member function bind_param() on boolean 【发布时间】:2017-01-14 08:05:25 【问题描述】:这是我的功能,我在这里坐了好久,试图找出什么不起作用,它说它在 $stmt2->bind_param:
function addDailyTickets()
global $mysqli,$db_table_prefix;
$stmt = $mysqli->prepare("SELECT
id
FROM ".$db_table_prefix."users
WHERE active=1
");
$stmt->execute();
$stmt->bind_result($id);
while ($stmt->fetch())
$created_timestamp = time();
$status = "active";
$transaction_id = "daily_".date('n-j-Y');
$game_id = 0;
$ticket_uniqID = uniqid("tick_");
$stmt2 = $mysqli->prepare("INSERT INTO ".$db_table_prefix."tickets (
user_id,
created_timestamp,
status,
transaction_id,
game_id,
ticket_uniqID
)
VALUES (
?,
?,
?,
?,
?,
?
)");
$stmt2->bind_param("iissis", $id, $created_timestamp, $status, $transaction_id, $game_id, $ticket_uniqID);
$stmt2->execute();
$stmt->close();
$stmt2->close();
如果我放一个 $stmt2->error_list;就在 $stmt2->bind_param 之前,它没有错误地返回。
phpMyAdmin:
【问题讨论】:
$mysqli->prepare
fails,因此你得到一个 bool(false)
作为返回,跟随错误。 始终检查错误,不要以为它会正常工作!
就像我在帖子开头所说的那样,我检查了一个错误,它没有返回任何内容。
试试var_dump(mysqli_error($mysqli));
事实上$stmt2->error_list
返回另一个错误,因为$stmt2
不是一个对象而是一个布尔值,因此你永远不会看到mysqli错误。
我把它改成了这个:pastebin.com/sdB19CVB 并称它为:$myret = addDailyTickets();
var_dump($myret);
仍然一无所获。
【参考方案1】:
好的,感谢@Charlotte Dunois,我想通了,我必须将第一个 mysql 调用放在一个数组中,然后关闭它,然后调用第二个:
function addDailyTickets()
global $mysqli,$db_table_prefix;
$stmt = $mysqli->prepare("SELECT
id
FROM ".$db_table_prefix."users
WHERE active=1
");
$stmt->execute();
$stmt->bind_result($id);
while ($stmt->fetch())
$row[] = $id;
$stmt->close();
foreach($row as $id)
$created_timestamp = time();
$status = "active";
$transaction_id = "daily_".date('n-j-Y');
$game_id = 0;
$ticket_uniqID = uniqid("tick_");
$stmt2 = $mysqli->prepare("INSERT INTO ".$db_table_prefix."tickets (
user_id,
created_timestamp,
status,
transaction_id,
game_id,
ticket_uniqID
)
VALUES (
?,
?,
?,
?,
?,
?
)");
$stmt2->bind_param("iissis", $id, $created_timestamp, $status, $transaction_id, $game_id, $ticket_uniqID);
$stmt2->execute();
$stmt2->close();
【讨论】:
以上是关于函数不起作用:PHP 致命错误:在布尔值上调用成员函数 bind_param()的主要内容,如果未能解决你的问题,请参考以下文章
Codeigniter 致命错误:在布尔值上调用成员函数 result()
Codeigniter - 在布尔值上调用成员函数 result_array() - 本地设置安装错误
致命错误:调用 C:\xampp\htdocs\index.php 中布尔值的成员函数 bind_param()