【发布时间】:2013-08-11 10:10:37
【问题描述】:
您好,我有一个插入和更新语句。更新工作正常,我有两个字段,一个 category_of_taxom 和 number_of_taxom。更新允许更改任何一个,它将更新记录。
然而,几乎相同的插入,如果它不存在,则创建记录。如果我为这两个选项输入值,将起作用,但如果只输入一个,它不会提交任何东西?代码非常复杂,包含所有变量名,但我想我可能需要另一个 if 语句或什么?检查是否只输入了一个?还是这是所有参数都需要填写的PDO?
$stmt6 = $conn ->prepare("UPDATE record_tbl SET category_of_taxom =?, number_of_taxom =? WHERE sheet_id = ? AND line = 6");
$stmt6->bindParam(1, $category_of_taxom66);
$stmt6->bindParam(2, $number_of_taxom66);
$stmt6->bindParam(3, $sheet_id);
$category_of_taxom66 = $_POST['categorySelect6fromDB'];
$number_of_taxom66 = $_POST['number_of_taxom6'];
$stmt6->execute();
echo "Saved!";
}
else
{
if (isset($_POST['categorySelect6fromDB'])) {
$category_of_taxom66 = $_POST['categorySelect6fromDB'];
$param_cat = PDO::PARAM_INT;
}
else {
$category_of_taxom66 = NULL;
$param_cat = PDO::PARAM_NULL;
}
if (isset($_POST['number_of_taxom6'])) {
$number_of_taxom66 = $_POST['number_of_taxom6'];
$param_num = PDO::PARAM_INT;
}
else {
$number_of_taxom66 = NULL;
$param_num = PDO::PARAM_NULL;
}
$stmt66 = $conn ->prepare("INSERT INTO record_tbl (line, taxom_id, category_of_taxom, number_of_taxom, sheet_id) VALUES (6,6,?,?,?)");
$stmt66->bindParam(1, $category_of_taxom66, $param_cat);
$stmt66->bindParam(2, $number_of_taxom66, $param_num);
$stmt66->bindParam(3, $sheet_id);
$stmt66->execute();
echo "New Record Inserted!";
}
}
【问题讨论】:
-
是的。伪代码:
if isset $var_x {bindParam $var_x}。还附加到查询 +1 占位符 -
您能否举例说明如何应用? @RoyalBg
-
好的,让我试试答案,否则代码将是..废话:) $sheet_id 是不总是设置的变量还是什么?
-
抱歉:工作表 ID 始终设置,但是 $category_of_taxom66 和 $number_of_taxom66 有时可能会或可能不会设置。我有一个高于一切的 if 语句。这会检查,就好像没有设置任何内容一样,它会跳过更新或插入。但是,如果设置了其中之一,则需要添加。所以参数 1 和 2 可以同时设置,既不设置,也可以任意设置。我没有介绍任何一套,而且这两套都有效。
-
如果设置了一个-应该插入,另一个应该为NULL?我已经回答了,看看是不是想要的,如果不是 - 评论,我会编辑答案。
标签: php pdo insert sql-insert