gpt4 book ai didi

PHP插入mysql问题

转载 作者:行者123 更新时间:2023-11-29 04:42:46 25 4
gpt4 key购买 nike

我在运行以下命令时遇到了问题:

$stmt = $this->db->prepare("INSERT INTO checked_in (attendee_id) VALUES (?)");
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->close();

这是一个更大页面的一部分,但这是不起作用的部分。我首先从 SQL 数据库中提取 $id,所以我知道我有一个连接。我似乎无法让这个更新部分工作。

mysql > CREATE TABLE checked_in ( 
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
attendee_id int NOT NULL,
check_in_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

这是我用来构建表格的代码。难道我做错了什么?我认为我的问题是它可以与数据库对话,但我不知道我是否在期望手动输入 id 和时间戳的地方设置了错误的表。如果我在我的 sql 提示符下并使用此命令,它会起作用

mysql> INSERT INTO checked_in (attendee_id) VALUES (1);

这里是程序的主要部分(在改编教程以适应我自己的过程中):

function checkIn() {

// Check for required parameters
if (isset($_POST["phone"])) {

// Put parameters into local variables
$phone = $_POST['phone'];

// Look up code in database
$user_id = 0;
$stmt = $this->db->prepare('SELECT id, first, last, email FROM attendees WHERE phone=?');
$stmt->bind_param("s", $phone);
$stmt->execute();
$stmt->bind_result($id, $first, $last, $email);
while ($stmt->fetch()) {
break;
}
$stmt->close();

// Bail if number doesn't exist
if ($id <= 0) {
sendResponse(400, 'Invalid number');
return false;
}

// Check to see if this device already redeemed
$stmt = $this->db->prepare('SELECT id FROM checked_in WHERE attendee_id=?');
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->bind_result($checkedInID);
while ($stmt->fetch()) {
break;
}
$stmt->close();

// Bail if number already checked in
if ($checkedInID > 0) {
sendResponse(403, 'Number already checked in');
return false;
}

// Add tracking of redemption
$stmt = $this->db->prepare("INSERT INTO checked_in (attendee_id) VALUES (?)");
$stmt->bind_param("i", $id);
$stmt->execute();

// Return unlock code, encoded with JSON
$result = array(
"checked_in" => "true",
);
sendResponse(200, json_encode($result));
return true;
}
sendResponse(400, 'Invalid request');
return false;
}
}

好的,所以我检查了我的 apache 错误日志,这就是它所说的:

[Fri Jul 25 15:06:41.996107 2014] [:error] [pid 16824] [client 127.0.0.1:52699] PHP Notice:  Undefined variable: db in /var/www/html/index.php on line 129
[Fri Jul 25 15:06:41.996171 2014] [:error] [pid 16824] [client 127.0.0.1:52699] PHP Fatal error: Call to a member function prepare() on a non-object in /var/www/html/index.php on line 129

最佳答案

如果您在查询中使用问号时绑定(bind)参数,则不应使用 i 作为参数。请改用数字参数。

尝试

$stmt->bind_param(1, $id);

来自他们 manual :

For a prepared statement using named placeholders, this will be a parameter name of the form :name. For a prepared statement using question mark placeholders, this will be the 1-indexed position of the parameter.

即是说,请说明此函数中$id 赋值给了什么。

关于PHP插入mysql问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24962373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com