4

PHP初学者在这里&我想问一个关于使用表单将信息上传到数据库的问题。我有一个包含 48 个不同类别的网站。www.ralphslocal.com。如果您访问该站点,您会看到对于每个类别,我都从数据库中的单独表中提取信息。

我用来填充表格的表格缺少选择我要上传到的表格的方法。此时,当我想上传到不同的表时,我需要在“insert.php”中更改表名

我需要什么才能在表格上选择要上传到的表格?如果我不清楚我道歉。感谢您提供的任何帮助。

这是我的表单的代码:

<form action="insert.php" method="POST">
<p>Retailer:&#160;&#160;&#160;&#160;<input type="text" name="retailer"></p>
<p>WebSite:&#160;&#160;&#160;<input type="text" name="website"></p>
<p>City:&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<select name="city">
                       <option value="BellaVista">BellaVista</option>
                       <option value="Bentonville">Bentonville</option>
                       <option value="Centerton">Centerton</option>
                       <option value="Farmington">Farmington</option>
                       <option value="Fayetteville">Fayetteville</option>
                       <option value="Lowell">Lowell</option>
                       <option value="Rogers">Rogers</option>
                       <option value="Springdale">Springdale</option>
                       <option value="Tontitown">Tontitown</option>
                       <option value="West Fork">West Fork</option>
                                                           </select></p>
<p>Phone:&#160;&#160;&#160;&#160;&#160;&#160;<input type="text" name="phone"></p>
<input type="submit">
</form>

这是我的“insert.php”文件的代码:

<?php require 'connect.php'; ?>

<?php
$sql="INSERT INTO garden_nursery (Retailer, WebSite, City, Phone)
VALUES
('$_POST[retailer]','$_POST[website]','$_POST[city]','$_POST[phone]')";

if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}{
echo "1 record added";
}
mysqli_close($con);
?> 

非常感谢!拉尔夫

4

1 回答 1

1

你的问题的答案很简单。将此添加到您的表单中:

 <select name='data_table'>
  <option value='appliances'> Appliances </option>
  <option value='garden_nursery'> Garden Nursery </option>
  <option value='table_name_formated'> Table Name </option> 
  <!-- and so on for all of youre tables -->
 </select>

在 insert.php 中,将您为 $sql 赋值的行更改为:

$sql="INSERT INTO $_POST[data_table] (Retailer, WebSite, City, Phone) 
VALUES ('$_POST[retailer]','$_POST[website]','$_POST[city]','$_POST[phone]')";

附加说明:访问您的网站后,如果我没看错的话,您制作了 38 个不同的表,具有相同的数据结构。为什么不向单个“alldata”(或类似的)命名表添加一列,该表存储相应的类别?这样以后添加新类别时,就不需要一直新建表了。

附加说明 2:在您尝试将其存储在数据库中之前,将用户提供的输入转义也会更安全,就像 tadman 说的那样。将此添加到您的 insert.php 文件中,在您为 $sql 赋值的位置。

$datatable=mysqli_real_escape_string($con, $_POST['data_table']);
$retailer=mysqli_real_escape_string($con, $_POST['retailer']);
$website=mysqli_real_escape_string($con, $_POST['website']);
$city=mysqli_real_escape_string($con, $_POST['city']);
$phone=mysqli_real_escape_string($con, $_POST['phone']);
$sql="INSERT INTO $datatable (Retailer, WebSite, City, Phone) VALUES ('$retailer','$website','$city','$phone')";
于 2013-10-09T19:16:44.970 回答