【问题标题】:Mysql Insert won't work with default primary keyMysql Insert 不适用于默认主键
【发布时间】:2013-12-11 14:15:58
【问题描述】:

我正在尝试使以下 SQL 语句工作:

$sqlab = "insert into usermgn";
$sqlab .= "(Staffnr, Firstname, Lastname, Team, Teamleader) values ('','"; 
$sqlab .= $_POST["staffnr"] . "', '";
$sqlab .= $_POST["firna"] . "', '";
$sqlab .= $_POST["lana"] . "', '";
$sqlab .= $_POST["team"] . "', '";
$sqlab .= $_POST["tl"] . "')";
mysqli_query($db, $sqlab);

“Staffnr”列是主键(在 phpmyadmin 中有下划线),但没有设置 auto_increment!

当我省略以下行(带有 /* */)时,我会得到一条记录。然后将 Staffnr 设置为 0。

/*$sqlab .= $_POST["staffnr"] . "', '";*/

在我的表单中,我需要能够插入 Staffnr。不知何故,我无法想象它不会工作,因为 Staffnr 是主键。声明有什么问题?

提前致谢!

【问题讨论】:

  • 你可能违反了主键。
  • 最好改成自动递增
  • 显示错误信息。

标签: mysql insert mysqli primary-key


【解决方案1】:

你有两个选择:

A) 将Staffnr 变成auto_increment

B) 获取最后一个 id 并为下一个值添加一个

$next_id = mysqli_result(mysqli_query('SELECT MAX(Staffnr) FROM usermgn'), 0) + 1;

如果你做你正在做的事情,评论那一行字段的数量将不匹配。

【讨论】:

    【解决方案2】:

    问题是你插入了一个额外的值,像这样改变第一行..

    $sqlab .= "(Staffnr, Firstname, Lastname, Team, Teamleader) values ('"; 
    

    您可能还想了解一下 sql 注入,它是什么以及如何防止它

    【讨论】:

    • 非常感谢,iamkrillin!就是这样!现在可以使用了!
    猜你喜欢
    • 2016-12-23
    • 2011-12-24
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 2017-12-20
    • 2012-07-07
    • 2014-07-08
    • 1970-01-01
    相关资源
    最近更新 更多