【问题标题】:How to concatenate and save first name and last name during INSERT using mysql?如何在使用mysql的INSERT期间连接和保存名字和姓氏?
【发布时间】:2015-05-02 19:39:06
【问题描述】:

我正在尝试将语言和代码连接为第二个查询并保存到数据库字段 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(array($spot,$code,$language,$count)); 中的第 5 行 如何添加连接的单词 litcode?​​p>

【问题讨论】:

  • 请查看此链接:-stackoverflow.com/questions/13098371/…。标记答案
  • 为什么要在数据库中存储重复数据?除此之外,第二个查询将更新数据库中的每一行。您可以在 1 条语句中绑定 6 个变量,但为什么要这样做?
  • @jeroen,我想在数据库中保存这样的数据。 spot code language count litcodeShelf1 TA English 29 TA-English最后需要根据litcode进行排序和计数合并。
  • @jeroen 这是我打算最后做的合并代码'SELECT litcode, SUM(count) as count FROM library GROUP BY litcode' 如果我避免保存 litcode 字段,如何通过合并“语言”和“计数”来求和?

标签: php mysql sql database pdo


【解决方案1】:

你可以简化你的代码,当你只需要INSERT正确的信息时,你不需要UPDATE所有的记录,看这个代码:

$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();

【讨论】:

  • 非常感谢阿德里安!您的代码确实有效,这节省了大量时间和精力。 :)
  • 现在我正在尝试更新查询。但是串联不起作用。这是我尝试过的代码。 $pdo = Database::connect(); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "UPDATE literatures set spot = ?, code = ?,language = ?, count =?, litcode = CONCAT(language,'-',code) WHERE id = ?"; $q = $pdo->prepare($sql); $q->execute(array($spot,$code,$language,$count,$litcode,$id)); Database::disconnect();
  • 当我更新语言或代码时,它不会在连接列中更新。之前输入的连接值保留。
  • 浏览器没有抛出任何错误,更新语言或代码后,我看到旧的连接字符串。
  • “旧”是什么意思?我认为您必须在此站点中打开另一个问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多