我想我会编辑我的问题,因为评论似乎这是一种非常不安全的方式来做我想要实现的事情。
我想要做的是允许用户导入 .csv 文件,但我希望他们能够设置他们导入的字段。
除了我在原始问题中尝试展示的方式之外,还有其他方法吗?
谢谢丹尼尔
我遇到的这个问题已经让我发疯了好几个星期,我尝试对我来说应该工作的一切都失败了。
基本上我有一个包含一堆字段的数据库。
在我的一个页面中,我有以下代码
$result = mysql_query("SHOW FIELDS FROM my_database.products");
while ($row = mysql_fetch_array($result)) {
$field = $row['Field'];
if ($field == 'product_id' || $field == 'product_name' || $field == 'product_description' || $field == 'product_slug' || $field == 'product_layout') {
} else {
echo '<label class="label_small">'.$field.'</label>
<input type="text" name="'.$field.'" id="input_text_small" />';
}
}
然后,这会回显具有数据库字段标签的字段列表,并且还将数据库字段包含在文本框的名称中。
然后我使用以下代码发布结果
$result = mysql_query("SHOW FIELDS FROM affilifeed_1000.products");
$i = 0;
while ($row = mysql_fetch_array($result)) {
$field = $row['Field'];
if ($field == 'product_name' || $field == 'product_description' || $field == 'product_slug' || $field == 'product_layout') {
} else {
$input_field = $field;
$output_field = mysql_real_escape_string($_POST[''.$field.'']);
}
if ($errorcount == 0) {
$insert = "INSERT INTO my_database.products ($input_field)
VALUES ('$output_field')";
$result_insert = mysql_query($insert) or die ("<br>Error in database<b> ".mysql_error()."</b><br>$result_insert");
}
}
if ($result_insert) {
echo '<div class="notification_success">Well done you have sucessfully created your product, you can view it by clicking here</div>';
} else {
echo '<div class="notification_fail">There was a problem creating your product, please try again later...</div>';
}
它成功发布,但问题是它为每个插入创建一个新的“行”。
例如,在第 1 行,它将发布第一个值,然后其余的将为空,在第 2 行,它将发布第二个值,但其余的将为空,第 3 行的第三个值等等......
我已经尝试了很多很多东西来让它工作,并研究了我以前不熟悉的 foreach 循环、绑定变量、内爆、爆炸,但它们似乎都没有奏效。
我可以理解为什么它会这样做,因为它被包裹在 while 循环中,但是如果我把它放在这个之外,它只会插入最后一个值。
任何人都可以解释为什么会这样吗?
如果您需要更多信息,请告诉我。
谢谢丹尼尔