gpt4 book ai didi

php - 将记录从 JSON 插入到 mysql

转载 作者:行者123 更新时间:2023-11-29 17:55:20 25 4
gpt4 key购买 nike

我尝试从 JSON 向 MySQL DB 插入一条记录。我试过这样的东西:

// Check if the user is recorded on DB
$sql = 'SELECT * FROM accounts WHERE email = :email AND password = :password';
$params = array('email' => $email, 'password' => $password);
$account = $db->fetchOne($sql, $params);
if (!$account){

//call api
$url = 'http://example.com/index.php/auth?key=@13456&email={$email}&password={$password}';
$json = file_get_contents($url);
$decode = json_decode($json, true);

foreach ($decode as $value) {
foreach ($value as $key => $value) {
echo $value;
}
}


//insert account
$insertdata = $db->insert(
'accounts',
array(
'email' => $value['email'],
'password' => sha1($value['password'])

)
);
}else{
sendJsonError('We could not find your email.');
return;
}

json 响应本身是:

{"status":"success","email":"jhon@mail.com","password":"%4fksdhj*"}

如果在 API 调用中我直接写入电子邮件和密码值,记录会插入到数据库中,但是当我像上面的 API 调用一样动态创建它时,它不会记录在系统上。

你们能告诉我该怎么做吗?

最佳答案

我相信您的代码没有正确读取参数值,因为您的字符串使用单引号 (')。 PHP 仅当字符串位于双引号 (") 内时才插入变量。

所以你可以

a) 使用串联这样写:

$url = 'http://example.com/index.php/auth?&key=@13456&email='.$email.'&password='.$password;

b) 将其放在双引号中:

$url = "http://example.com/index.php/auth?key=@13456&email=$email&password=$password";

(大括号是可选的,除非您要插入比单个变量更复杂的表达式。)

附注其他几点:

您应该考虑由于密码中特殊字符的 URL 编码而可能出现的问题(导致远程服务器上潜在的误解)。实际上,这应该作为 POST 请求来完成,其中包含请求正文中的值,而不是查询字符串。这也将防止由于网络服务器等记录所访问的 URL 而导致安全漏洞。

在假设您可以处理响应之前,您还应该真正检查 HTTP 请求是否确实成功。

关于php - 将记录从 JSON 插入到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48904834/

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