我有三列想要插入使用php的数据。该代码将运行三次。
我想如果第一次运行代码仅在 column1 上插入,而将其他列留空。
如果第二次运行仅插入到 column2 中,而将其他列留空
,依此类推。我尝试了下面的代码,但无法正常工作。它只会插入column1
<?php
error_reporting(0);
include('db.php');
$result = $db->prepare('SELECT * FROM rec');
$result->execute(array());
while ($row = $result->fetch())
{
//$id = $row['id'];
$column1 = $row['column1'];
$column2 = $row['column2'];
$column3 = $row['column3'];
}
if ($column1 ==''){
echo 'empty';
$statement = $db->prepare('INSERT INTO rec(column1)
values(:column1)');
$statement->execute(array(':column1' =>'$column1'));
} elseif ($column2 ==''){
echo 'empty2';
$statement = $db->prepare('INSERT INTO rec (column2)
values(:column2)');
$statement->execute(array(':column2' =>'$column2'));
} elseif ($column3==''){
echo 'empty3';
$statement = $db->prepare('INSERT INTO rec(column3)
values(:column3)');
$statement->execute(array(':column3' =>'$column3'));
}
答案 0 :(得分:1)
首先,这不是设计数据库的正确方法。
第二,仅使用if语句,而不使用嵌套的if-else语句,它将起作用!
答案 1 :(得分:0)
您的if-else使得正确的数据无法正确插入。使用以下代码将以您的方式解决您的目的。但是,您遵循的方式是不正确的。您可以按照传统的方式来创建数据库并向其中插入值,也可以使用表的动态字段并以另一种方式来插入数据库。
if ($column1 ==''){
echo 'empty';
}
else{
$statement = $db->prepare('INSERT INTO rec(column1)
values(:column1)');
$statement->execute(array(':column1' =>'$column1'));
}
if ($column2 ==''){
echo 'empty2';
}
else{
$statement = $db->prepare('INSERT INTO rec (column2)
values(:column2)');
$statement->execute(array(':column2' =>'$column2'));
}
if ($column3==''){
echo 'empty3';
}
else{
$statement = $db->prepare('INSERT INTO rec(column3)
values(:column3)');
$statement->execute(array(':column3' =>'$column3'));
}