php - 一个 PHP 函数,用于在 true/false 上插入或更新 mysql 表

标签 php mysql

我正在尝试编写一个函数来检查表中是否存在用户,如果存在,则更新该行,如果不存在,则插入它。

这是我的功能:

        function UserExists($screenname){
            $mysql = mysql_fetch_array ( mysql_query("SELECT * FROM `users` WHERE `screenname` = '$screenname' "));
                if($mysql){
                    return TRUE;
                }else{
                    return FALSE;
                }
}

我使用以下命令执行此函数:

if(UserExists($user)){
mysql_query("UPDATE `users` SET  `token` =  '$token' ,  `secret` =  '$secret'  WHERE `screenname` = '$user' ");
}else{
mysql_query("INSERT INTO `users` (`screenname`, `token`, `secret`) VALUES ('$user', '$token', '$secret')");
}

它没有做任何事情,没有抛出任何错误,但也没有更新表。

最佳答案

您想看一下INSERT ... ON DUPLICATE KEY UPDATE ... MySQL query syntax只需一个查询即可完成此操作。

INSERT INTO users (screenname, token, secret) VALUES ('screenname', 'token', 'secret')
ON DUPLICATE KEY UPDATE token = 'token', secret = 'secret'

screenname 应该是唯一的(或主键),但您目前可能没有。我建议在数据库表中添加一个 ID 列,并使用它来引用数据库行。

关于php - 一个 PHP 函数,用于在 true/false 上插入或更新 mysql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1649575/

相关文章:

php - CodeIgniter 中的基本 URL 错误

php - 为每个请求创建一个新的 Elasticsearch 客户端

php - 交响乐 3 : set value after submitting a form

mysql - 如何随机选择行总价格小于 500 且大于 450 的行?

mysql - 简化嵌套的 CASE 表达式

php - 如何创建一个按用户出生日期计算 'age' 的选择查询?

javascript - vue js 中的对象 HTMLTextAreaElement

php - 第一个表单提交插入行随后提交更新同一行

php - 如何在php中上传Excel文件并将该文件中的数据同时插入数据库?

php - MySQL PHP 查询问题