【发布时间】: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 之前,它没有错误地返回。
【问题讨论】:
-
$mysqli->preparefails,因此你得到一个bool(false)作为返回,跟随错误。 始终检查错误,不要以为它会正常工作! -
就像我在帖子开头所说的那样,我检查了一个错误,它没有返回任何内容。
-
试试
var_dump(mysqli_error($mysqli)); -
事实上
$stmt2->error_list返回另一个错误,因为$stmt2不是一个对象而是一个布尔值,因此你永远不会看到mysqli错误。 -
我把它改成了这个:pastebin.com/sdB19CVB 并称它为:
$myret = addDailyTickets();var_dump($myret);仍然一无所获。