php - 从表单插入数据的查询条件
问题描述
我想做的是:
如果我的表单中输入的年龄 = 28、30、25 或 21,那么我想在列 (VE) 中自动插入值 8,否则将其保留为空。这是正确的方法吗?
if($form_data->action == 'Insert')
{
$age=array(28, 30, 25, 21);
$age_str=implode("','", $age);
if($form_data->age == $age_str){
$query="INSERT INTO tbl
(VE) VALUE ('8') WHERE id= '".$form_data->id."'
";
$statement = $connect->prepare($query);
$statement->execute();
}
$data = array(
':date' => $date,
':first_name' => $first_name,
':last_name' => $last_name,
':age' => $age
);
$query = "
INSERT INTO tbl
(date, first_name, last_name, age) VALUES
(:date, :first_name, :last_name, :age)
";
$statement = $connect->prepare($query);
if($statement->execute($data))
{
$message = 'Data Inserted';
}
}
另外,如何插入带有来自其他表单数据的行 ID的新行tbl
?
解决方案
使用php 的 in_array而不是尝试比较字符串。要获取插入表单数据的查询的 id,您可以从准备好的语句返回插入行的 id。
if ($form_data->action == 'Insert') {
// assuming $age, $date, $first_name, $last_name
// already declared prior to this block
$data = array(
':date' => $date,
':first_name' => $first_name,
':last_name' => $last_name,
':age' => $age
);
$query = "
INSERT INTO tbl
(date, first_name, last_name, age) VALUES
(:date, :first_name, :last_name, :age)
";
$statement = $connect->prepare($query);
if ($statement->execute($data)) {
$message = 'Data Inserted';
// $id is the last inserted id for (tbl)
$id = $connect->lastInsertID();
// NOW you can insert your child row in the other table
$ages_to_insert = array(28, 30, 25, 21);
// in_array uses your array...so you don't need
// if($form_data->age == $age_str){
if (in_array($form_data->age, $ages_to_insert)) {
$query="UPDATE tbl SER VE = '8' WHERE id= '".$id."'";
$statement2 = $connect->prepare($query);
$statement2->execute();
}
}
}
推荐阅读
- google-sheets - 根据命名的单元格名称从另一个工作表输入单元格
- c# - 这个存储过程我没有得到正确的结果
- c++11 - 我可以将 C++11 lambda 与 libevent 一起使用吗?
- svg - jquery:fancybox 3,响应式图像地图和可缩放内容
- python - 如果系列使用python用逗号分隔,如何将系列转换为数据框?
- ios - 按秒滚动到顶部到 Bar Item
- python - 打开更多会话时硒滞后
- selenium - Selenium DeselectAll 不适用于具有多个属性的 HTML SELECT
- julia - 运行 JuMP 示例
- powershell - PowerShell,变量中的斜线