gpt4 book ai didi

php - 如果存在则更新一行,如果不存在则创建一个新的 MySQL

转载 作者:可可西里 更新时间:2023-11-01 06:37:24 24 4
gpt4 key购买 nike

我正在将姓名、号码和公司插入数据库。

我的表很简单:

id(primary key)
name
slideView
company

如果传递给它的名称存在,我需要更新此信息,如果不存在,则使用此数据创建新行。我查看了 REPLACE INTO,但我认为这对我不起作用...因为我根本不碰 ID。

我的代码是:

insertData($name,$count,$company);

function insertData($name, $count, $company) {

#Try/Catch statement to connect to DB, and insert data
try {
#DB username/password
$usernameDB = '****';
$passwordDB = '****';

#Create new PHP Database Object with the address, username, and password as parameters
$pdo = new PDO('mysql:host=localhost;dbname=*****', $usernameDB, $passwordDB);

#Set pdo attributes to handle errors
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

#assign the sth variable (sth means statement handle) to insert the data
$sth = $pdo->prepare("REPLACE INTO ***** SET name = ?, slideView = ?, company = ?");

#Execute the insert
$sth->execute(array($name,$count,$company));

#Error if can't connect or insert
} catch(PDOException $e) {
echo 'Error: ' . $e->getMessage();
}#/try
}

我是 SQL 的新手,还没有找到执行此操作的好方法。

最佳答案

为此,您最好使用 insert ... on duplicate update 语法,虽然这意味着要传递一些额外的参数,但它可以取消某些 problems in the replace into似乎不断出现的语法。

REPLACE INTO ***** SET name = ?, slideView = ?, company = ?

可以写成:

insert into yourTableName (name, slideView, company)
values (:name, :slideView, :company)
on duplicate key update set
slideView=:$slideView2, company=:company2

然后执行是这样完成的:

$sth->execute(array(':name' => $name, ':slideView' => $count,
':company' => $company, ':slideView2' => $count, ':company2' => $company));

上面的格式使用命名参数(它们更容易阅读/调试)并将新行插入数据库 - 或者如果唯一/主键列 name 已经有值,然后用剩余信息更新该行。

您必须在此处使用两次参数(即使 slideView 和 company 将包含相同的信息),因为任何参数都不能在查询中使用两次。

关于php - 如果存在则更新一行,如果不存在则创建一个新的 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504056/

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