【问题标题】:Insert Select Where Primary Key is selecting every record在主键选择每条记录的地方插入选择
【发布时间】:2013-08-17 17:45:42
【问题描述】:

我正在尝试将记录从一个表复制到另一个表(并最终通过单击删除原始记录)我基本上有一个修复跟踪页面,当这些修复完成后,我想通过填写一个复选框来删除该记录并单击提交按钮,然后将该记录移至存档/历史表。我已经成功复制了记录,但是每条记录都被复制了,我猜这个问题与我的 WHERE 子句有关

mysql_select_db("testmoverecord", $con);
$id = $_POST['checkbox'];
$sql =("INSERT INTO history (id, firstname, lastname, age)
SELECT repair.id, repair.firstname, repair.lastname, repair.age FROM repair
WHERE id = $id");

echo "<input type='checkbox' id='checkbox' value='{$row['id']}' name='checkbox'"; 

如何正确传递 ID?我试过 WHERE repair.id = history.id 但它说 Unknown column 即使它存在。我已经尝试为 id 输入隐藏的输入并发布 id 但没有让这些工作。我正在使用 mysql,它可以注入 blah blah blah,省去打字,我计划很快更新,它无法远程触摸,它存储的数据甚至不接近敏感,所以我不介意。有人可以指出我正确的方向吗?感谢您的帮助。

已编辑:此代码有效

【问题讨论】:

    标签: mysql select insert primary-key where


    【解决方案1】:
    $sql = sprintf("INSERT INTO history (id, firstname, lastname, age)
        SELECT * FROM repair
        WHERE id = '%s'",
        mysql_real_escape_string($id));
    

    【讨论】:

    • 感谢您的建议,使用 % 符号我可以达到没有错误的地步,但是第二个表中没有输入任何内容。我不知道为什么??
    • 确保您以正确的 INSERT 语句顺序选择正确的字段,而不是“SELECT *”。例如:“选择 id、名字、姓氏、年龄”
    • 嗯,我已经输入了 SELECT repair.id, repair.firstname, repair.lastname, repair.age FROM repair,结果相同,仍然没有错误,但第二个表中没有输入任何内容,我不确定我还能提供什么相关信息,再次感谢您的帮助。
    • 你在给 $id 赋值吗?如果是这样,该记录是否存在于修复中?首先在独立工具中尝试查询以确保其正常工作,然后将其移植到 php。
    • 你需要给变量$id赋值。获取我的代码并将 1 分配给 $id: "$id = 1;"
    猜你喜欢
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 2019-06-19
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多