我正在为我的教员做一个项目,一种用于订购的网络应用程序,即UPS来取你想要发送的邮件。我遇到的问题是,当我使用submit运行订单时,我创建的脚本没有将数据插入数据库中的表中(连接正常,我测试了它)。
if(isset($_POST['city']) && isset($_POST['contact']) && isset($_POST['adress']) && isset($_POST['priority']) && isset($_POST['box_size'])){
if(isset($_POST['del_name']) && isset($_POST['del_lname']) && isset($_POST['del_adress']) && isset($_POST['del_pob'])){
if($_POST['priority'] == "Ne" && $_POST['box_size'] == "1*1*1"){
$_POST['price'] = "50kn";
$sql = "INSERT INTO orders SET price='$_POST[price]', city='$_POST[city]', contact='$_POST[contact],
adress='$_POST[adress]', del_adress='$_POST[del_adress]', del_pob='$_POST[del_pob]', box_size='$_POST[box_size]',
priority='$_POST[priority]', del_name='$_POST[del_name]', del_lname='$_POST[lname]'";
$result=mysql_query($sql);
}
上面的代码说明了我的条件,检查表单中的所有字段是否都已设置。表中的所有属性都是varchar
。
<form name="form2" method="post" action="order_script.php">
<h2>Pošiljatelj</h2>
<p><!--Ovdje ide ime $_GET od ulogiranog--></p>
<p><!--Ovdje ide $_GET prezime od ulogiranog--></p>
<p>Grad/Mjesto: <input type="text" name="city" size="25" maxlength="20" value=""/></p>
<p>Kontakt broj: <input type="text" name="contact" size="25" maxlength="20" value=""/></p>
<p>Adresa: <input type="text" name="adress" size="25" maxlength="20" value=""/></p>
<!--select for box_size-->
<p>Brzina dostave/Prioritet: <select name="priority">
<option value="">Da</option>
<option value="">Ne</option>
</select></p>
<p>Veličina kutije: <select name="box_size">
<option value="sm">1*1*1</option>
<option value="md">2*2*2</option>
<option value="lg">3*3*3</option>
<option value="xl">4*4*4</option>
</select></p>
<h2>Primatelj</h2>
<p>Ime: <input type="text" name="del_name" size="25" maxlength="20" value=""/></p>
<p>Prezime: <input type="text" name="del_lname" size="25" maxlength="20" value=""/></p>
<p>Adresa: <input type="text" name="del_adress" size="25" maxlength="20" value=""/></p>
<p>Poštanski broj: <input type="text" name="del_pob" size="25" maxlength="20" value=""/></p>
<!--Price of delivery hidden -->
<input type="hidden" name="price" size="25" maxlength="20" value=""/></p>
<p><input type="submit" name="order" value="Naruči"/></p><br></br>
</form>
所以当我提交表单时,它只是运行脚本并显示空页面。
提供的代码存在多个问题。首先,缺少一个撇号(如lolbas所示),缺少两个右括号。这里有一个没有语法错误的块:
if(isset($_POST['city']) && isset($_POST['contact']) && isset($_POST['adress']) && isset($_POST['priority']) && isset($_POST['box_size'])){
if(isset($_POST['del_name']) && isset($_POST['del_lname']) && isset($_POST['del_adress']) && isset($_POST['del_pob'])){
if($_POST['priority'] == "Ne" && $_POST['box_size'] == "1*1*1"){
$_POST['price'] = "50kn";
$sql = "INSERT INTO orders SET price='$_POST[price]', city='$_POST[city]', contact='$_POST[contact]',
adress='$_POST[adress]', del_adress='$_POST[del_adress]', del_pob='$_POST[del_pob]',
box_size='$_POST[box_size]', priority='$_POST[priority]', del_name='$_POST[del_name]', del_lname='$_POST[lname]'";
$result=mysql_query($sql);
}
}
}
此外,您正在检查$_POST['priority']=="Ne",但您的SELECT选项没有设置任何值:
<select name="priority">
<option value="">Da</option>
<option value="">Ne</option>
</select>
因此,您的测试总是错误的,并且不执行查询。
希望这能有所帮助!
你能试试这个查询吗:
INSERT INTO orders (city, contact, adress, priority, box_size, del_name, del_lname, del_adress, del_pob)
VALUES ('$_POST[price]', '$_POST[city]', '$_POST[contact], '$_POST[adress]', '$_POST[del_adress]','$_POST[del_pob]', '$_POST[box_size]', '$_POST[priority]', '$_POST[del_name]', '$_POST[lname]');
尝试检查所有这些步骤。也许这会对你有很大帮助:
mysql_query
在PHP 5.5.0中已弃用,因此请检查您的PHP版本- 尝试使用PDO而不是MySQL函数
- 您的第三个
if
不正确,它将不起作用。使用var_dump
检查$_POST['priority'] == "Ne"
和$_POST['box_size'] == "1*1*1"
是否返回正确的值。如果不是,请更正 - 你的查询也不正确,试试这个
INSERT INTO orders(city, contact, adress, priority, box_size, del_name, del_lname, del_adress, del_pob) VALUES ('$_POST[price]', '$_POST[city]', '$_POST[contact], '$_POST[adress]', '$_POST[del_adress]','$_POST[del_pob]', '$_POST[box_size]', '$_POST[priority]', '$_POST[del_name]', '$_POST[lname]');
很缺乏。