PHP将多个复选框值插入到一个MySQL记录中


PHP Insert Multiple Checkbox Values Into One MySQL Record

我正试图找出如何将多个复选框值插入一个mysql记录中。我试过一段又一段的代码。也许有人可以看看这个,告诉我我做错了什么?

注意:这只适用于我的本地主机,因此安全性不受关注。

形式:

 <form action="newcar.php" method="post">
 Name: <input type="text" name="name"><br />
 Address: <input type="text" name="address"><br />
 City: <input type="text" name="city"><br />
 State: <select name="state">
<option value="AL">Alabama</option>
<option value="AK">Alaska</option>
<option value="AZ">Arizona</option>
<option value="AR">Arkansas</option>
<option value="CA">California</option>
<option value="CO">Colorado</option>
<option value="CT">Connecticut</option>
<option value="DE">Delaware</option>
<option value="DC">District of Columbia</option>
<option value="FL">Florida</option>
<option value="GA">Georgia</option>
<option value="HI">Hawaii</option>
<option value="ID">Idaho</option>
<option value="IL">Illinois</option>
<option value="IN">Indiana</option>
<option value="IA">Iowa</option>
<option value="KS">Kansas</option>
<option value="KY">Kentucky</option>
<option value="LA">Louisiana</option>
<option value="ME">Maine</option>
<option value="MD">Maryland</option>
<option value="MA">Massachusetts</option>
<option value="MI">Michigan</option>
<option value="MN">Minnesota</option>
<option value="MS">Mississippi</option>
<option value="MO">Missouri</option>
<option value="MT">Montana</option>
<option value="NE">Nebraska</option>
<option value="NV">Nevada</option>
<option value="NH">New Hampshire</option>
<option value="NJ">New Jersey</option>
<option value="NM">New Mexico</option>
<option value="NY">New York</option>
<option value="NC">North Carolina</option>
<option value="ND">North Dakota</option>
<option value="OH">Ohio</option>
<option value="OK">Oklahoma</option>
<option value="OR">Oregon</option>
<option value="PA">Pennsylvania</option>
<option value="RI">Rhode Island</option>
<option value="SC">South Carolina</option>
<option value="SD">South Dakota</option>
<option value="TN">Tennessee</option>
<option value="TX">Texas</option>
<option value="UT">Utah</option>
<option value="VT">Vermont</option>
<option value="VA">Virginia</option>
<option value="WA">Washington</option>
<option value="WV">West Virginia</option>
<option value="WI">Wisconsin</option>
<option value="WY">Wyoming</option>
 </select><br />
 Zipcode: <input type="text" name="zipcode"><br />
 Company: <input type="text" name="company"><br />
 Work Number: <input type="text" name="work"><br />
 Cell Number: <input type="text" name="cell"><br />
 Fax Number: <input type="text" name="fax"><br />
 Insurance: <input type="text" name="insurance"><br />
 Certifications: 
 <input type="checkbox" name="certifications[]" value="FL" />FL
 <input type="checkbox" name="certifications[]" value="NC" />NC
 <input type="checkbox" name="certifications[]" value="NY" />NY
 <br />
 <input type="submit">
 </form>

和php:

 <?php
 $con=mysqli_connect("localhost","root","PASSWORD","pilotcars");
 // Check connection
 if (mysqli_connect_errno()) {
 echo "Failed to connect to MySQL: " . mysqli_connect_error();
 }
 // escape variables for security
 $Name = mysqli_real_escape_string($con, $_POST['name']);
 $Address = mysqli_real_escape_string($con, $_POST['address']);
 $City = mysqli_real_escape_string($con, $_POST['city']);
 $State = mysqli_real_escape_string($con, $_POST['state']);
 $Zipcode = mysqli_real_escape_string($con, $_POST['zipcode']);
 $Company = mysqli_real_escape_string($con, $_POST['company']);
 $Work_Number = mysqli_real_escape_string($con, $_POST['work']);
 $Cell_Number = mysqli_real_escape_string($con, $_POST['cell']);
 $Fax_Number = mysqli_real_escape_string($con, $_POST['fax']);
 $Insurance = mysqli_real_escape_string($con, $_POST['insurance']);
 $Certifications = mysqli_real_escape_string($con, $_POST['certifications']);
 $certification=""; 
 $flag=0; 
 foreach($Certifications as $entry){ 
 $certification .= $entry."|"; 
 $flag=1; 
 } 
 if($flag==1){ 
 $certification=rtrim($certification); 
 } 
 $sql="INSERT INTO pilotcarlistings (Name, Address, City, State, Zipcode, Company, Work_Number, Cell_Number, Fax_Number, Insurance, Certifications)
 VALUES ('$Name', '$Address', '$City', '$State', '$Zipcode', '$Company', '$Work_Number', '$Cell_Number', '$Fax_Number', '$Insurance', '$certification')";
 if (!mysqli_query($con,$sql)) {
 die('Error: ' . mysqli_error($con));
 }
 echo "1 record added";
 echo "<meta http-equiv='"refresh'" content='"0;URL=index.php'">";
 mysqli_close($con);
 ?>

除了多个复选框外,所有这些都有效。我试图将这些值存储在一个mysql列中。

尝试:

$certification = implode('|', $_POST['certifications']);

您可以使用内爆加入您的数组,然后当您想要获得值时,可以将其分解。

注意,有很多不同的方法可以做到这一点,但目前我可以想到implode()

例如,我刚刚用数组制作了一个字符串

$string = array( 'a','b','c','d','e','f','g','h' );
$string = implode( '|', $string );
echo $string;

运行代码段并查看结果。在你的情况下,你可以做同样的事情,用分隔符连接你的数组,例如|或-(随便什么),然后当你想处理它时,你可以分解这个字符串并制作一个数组

还可以查看php.net中关于内爆和爆炸的信息

隐含

分解

好运