Php 如何在使用mysql插入时连接和保存名字和姓氏?

Php 如何在使用mysql插入时连接和保存名字和姓氏?,php,mysql,sql,database,pdo,Php,Mysql,Sql,Database,Pdo,我试图将语言和代码连接起来作为第二个查询并保存到数据库字段litcode。 这是我的密码 $pdo = Database::connect(); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "INSERT INTO library (spot,code,language,count) values(?, ?, ?,?);UPDATE library SET litcode = CONCAT(la

我试图将语言和代码连接起来作为第二个查询并保存到数据库字段litcode。 这是我的密码

$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO library (spot,code,language,count) values(?, ?, ?,?);UPDATE library SET litcode = CONCAT(language, code);";
$q = $pdo->prepare($sql);
$q->execute(array($spot,$code,$language,$count));
Database::disconnect();
得到了这个错误

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in /home/booking/public_html/x/concat.php:46 Stack trace: #0 /home/booking/public_html/x/concat.php(46): PDOStatement->execute(Array) #1 {main} thrown in /home/booking/public_html/x/concat.php on line 5
这是代码
$q->execute(数组($spot,$code,$language,$count))中的第5行

如何添加连接的单词litcode?

您可以简化代码,当您只需要插入正确的信息时,无需更新所有记录,请参见以下代码:

$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO library (spot,code,language,count,litcode) values(?,?,?,?,CONCAT(language,code))";
$q = $pdo->prepare($sql);
$q->execute(array($spot,$code,$language,$count));
Database::disconnect();

请查看此链接:-。标记回答为什么要在数据库中存储重复数据?除此之外,第二个查询将更新数据库中的每一行。你可以用1个语句绑定6个变量来代替,但你为什么要这样做呢?@jeroen,我想把这样的数据保存在数据库中
spot code language count litcode
Shelf1 TA English 29 TA English
最后需要根据litcode对合并进行排序和计数。@jeroen这是我计划在最后执行的合并代码
“选择litcode,SUM(count)作为库组中litcode的计数”
如果我避免保存litcode字段,如何通过合并“语言”和“计数”来求和?非常感谢Adrian!您的代码确实有效,这节省了大量的时间和精力。:)现在我正在尝试更新查询。但是concate不起作用。这是我试过的代码<代码>$pdo=数据库::connect()$pdo->setAttribute(pdo::ATTR_ERRMODE,pdo::ERRMODE_异常)$sql=“更新集合点=?,代码=?,语言=?,计数=?,litcode=CONCAT(语言,'-',代码),其中id=?”$q=$pdo->prepare($sql)$q->execute(数组($spot、$code、$language、$count、$litcode、$id));数据库::断开连接()当我更新语言或代码时,它不会在连接列中更新。以前输入的连接值保持不变。浏览器没有抛出任何错误,在更新语言或代码后,我看到旧的连接字符串。您对“old”是什么意思?我认为你必须在这个网站上提出另一个问题