gpt4 book ai didi

php - 错误的 bool 值语句未插入数据库

转载 作者:行者123 更新时间:2023-11-29 05:57:18 27 4
gpt4 key购买 nike

我有一个如下所示的 JSON 数组:

{
"operation": "update_original_team_member",
"teamMember": {
"teamMemberPresent": false,
"unique_id": "5a5b7f6b835408.50059003",
"user_unique_id": "59bea8b7d56a63.33388595"
}
}

我试图将它插入到 mySQL 数据库中,但每次都失败,但是当我将 false 更改为 true 时,它​​起作用了,知道这是为什么吗?

插入的表如下:

CREATE TABLE team_member (
team_member_id int(11) NOT NULL AUTO_INCREMENT,
unique_id varchar(23) NOT NULL,
fullName varchar(50) NOT NULL,
user_unique_id varchar(23) NOT NULL,
present boolean NOT NULL,
date_last_present datetime DEFAULT NULL,
points int(50) NULL,
team_id int (11) NOT NULL,
PRIMARY KEY (team_member_id),
FOREIGN KEY (`team_id`)
REFERENCES `ocidb_CB9s149919`.`team` (`team_id`)
);

JSON 数组从 Retrofit 发送(Retrofit 是 Android 的 REST 客户端)并按如下方式接收:

if ($operation == 'update_original_team_member') {

if (isset($data -> teamMember) && !empty($data -> teamMember)&& isset($data -> teamMember -> teamMemberPresent)
&& isset($data -> teamMember -> unique_id)&& isset($data -> teamMember -> user_unique_id)){

$teamMember = $data -> teamMember;
$teamMemberPresent = $teamMember -> teamMemberPresent;
$unique_id = $teamMember -> unique_id;
$user_unique_id = $teamMember -> user_unique_id;


echo $fun -> updatePresent($teamMemberPresent,$unique_id, $user_unique_id);

} else {


echo $fun -> getMsgInvalidParam();

}

这是传递给以下函数:

public function updatePresent($teamMemberPresent,$unique_id, $user_unique_id){

$db = $this -> db;

if (!empty ($teamMemberPresent)&& !empty ($unique_id)&& !empty ($user_unique_id)){

$result = $db -> updatePresent($teamMemberPresent,$unique_id, $user_unique_id);

if ($result) {

$response["result"] = "success";
$response["message"] = "Active Students Have Been Recorded!";
return json_encode($response);

} else {

$response["result"] = "failure";
$response["message"] = "Unable To Update Details, Please Try Again";
return json_encode($response);

}
} else {

return $this -> getMsgParamNotEmpty();

}

}

我用来更新的查询是:

public function updatePresent($teamMemberPresent,$unique_id, $user_unique_id){



$sql = "UPDATE team_member SET present = :present WHERE unique_id = :unique_id AND user_unique_id = :user_unique_id";


// Prepare statement
$query = $this ->conn ->prepare($sql);

// execute the query
$query->execute(array(':present' => $teamMemberPresent,':unique_id' => $unique_id, ':user_unique_id' => $user_unique_id));

if ($query) {

return true;

} else {

return false;

}
}

我已经使用 postman 来尝试隔离问题,并将其缩小到 $teamMemberPresent 变量失败,声明它在 interting 为 false 时为空,但我没有知道为什么。正如我之前提到的,当它设置为 true 时,查询工作正常。

任何指导将不胜感激。

最佳答案

在您的 updatePresent() 函数中,此代码无法将数据识别为有效,并跳过数据库更新:

if (!empty ($teamMemberPresent)&& !empty ($unique_id)&& !empty ($user_unique_id)){
...

原因是 empty($teamMemberPresent) 如果其参数具有 false 值,则返回 true。

http://php.net/empty说:

A variable is considered empty if it does not exist or if its value equals FALSE.

您应该改用 isset($teamMemberPresent)

这是一个演示:

if (isset($data -> teamMember)
&& !empty($data -> teamMember)
&& isset($data -> teamMember -> teamMemberPresent)
&& isset($data -> teamMember -> unique_id)
&& isset($data -> teamMember -> user_unique_id))
{
echo "Should all be OK\n";

$teamMember = $data -> teamMember;
$teamMemberPresent = $teamMember -> teamMemberPresent;

if (!empty($teamMemberPresent)) {
echo "Confirmed, not empty\n";
} else {
echo "Woops! It's empty\n";
}
}

输出:

Should all be OK
Woops! It's empty

关于php - 错误的 bool 值语句未插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48253449/

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