php和mysqli选择查询(如果存在),然后更新它,否则插入它
我正在运行一个查询以检查数据库中是否存在现有值,如果它们确实存在,则更新它们,而不是重新插入它们 目前,我的代码只是将值重新插入到表中,而不是更新它们,这意味着我的代码永远不会到达语句的else部分php和mysqli选择查询(如果存在),然后更新它,否则插入它,php,html,mysql,sql,mysqli,Php,Html,Mysql,Sql,Mysqli,我正在运行一个查询以检查数据库中是否存在现有值,如果它们确实存在,则更新它们,而不是重新插入它们 目前,我的代码只是将值重新插入到表中,而不是更新它们,这意味着我的代码永远不会到达语句的else部分 if(isset($user_info->error)){ // Something's wrong, go back header('Location: twitter_login.php'); } else { // Let's find the user by i
if(isset($user_info->error)){
// Something's wrong, go back
header('Location: twitter_login.php');
}
else {
// Let's find the user by its ID
$query = ("SELECT * FROM twitter WHERE oauth_provider = 'twitter' && oauth_uid = '".$user_info->id."'");
$rs=$mysql->query($query);
$results = $rs->fetch_array(MYSQLI_ASSOC);
// If not, let's add it to the database
if(empty($result)){
$query = ("INSERT INTO twitter (oauth_provider, oauth_uid, username, oauth_token, oauth_secret)
VALUES ('twitter', {$user_info->id}, '{$user_info->screen_name}', '{$access_token['oauth_token']}', '{$access_token['oauth_token_secret']}')");
$rs=$mysql->query($query);
$insert = ("SELECT * FROM twitter WHERE id = " . mysqli_insert_id($mysql));
$rs=$mysql->query($insert);
$results = $rs->fetch_array(MYSQLI_ASSOC);
}
else{
// Update the tokens
$update = ("UPDATE twitter SET oauth_token = '{$access_token['oauth_token']}',
oauth_secret = '{$access_token['oauth_token_secret']}'
WHERE oauth_provider = 'twitter' AND oauth_uid = {$user_info->id}");
$rs=$mysql->query($update);
$rs->close();
}
您在
$result
和$results
$results = $rs->fetch_array(MYSQLI_ASSOC);
// If not, let's add it to the database
if(empty($result)){
^
Here
由于未声明
$result
,因此它将始终为空,并且if部分将始终为true。如果要正确防止重复,请创建一个唯一密钥(oauth\u提供程序,oauth\u uid)
然后使用INSERT ON DUPLICATE语句插入或更新行。
它正在将值重新插入数据库=重复行。。。我不想那样。
$result
或$result
?因为你检查empty($result)
试试这个答案:这会消除我最后的else{update}
语句吗@naktibaldayes,它取代了代码中的选择、插入和更新。
INSERT INTO twitter (oauth_provider, oauth_uid, username, oauth_token, oauth_secret)
VALUES ('twitter', {$user_info->id}, '{$user_info->screen_name}', '{$access_token['oauth_token']}', '{$access_token['oauth_token_secret']}')
ON DUPLICATE KEY UPDATE oauth_token = VALUES(oauth_token), oauth_secret = VALUES(oauth_secret)