我似乎无法弄清楚为什么我的表单数据不会被发送到数据库。我尝试过多种编码方式,这是我唯一可以获得"结果的方式"
这是我的代码:
<?php
#if the submit button has be selected...
if(isset($_POST['submit_registration'])) {
# assign variables to each form control to capture the values
$first = $_POST['first_name'];
$last = $_POST['last_name'];
$email = $_POST['email'];
$address1 = $_POST['address1'];
$address2 = $_POST['address2'];
$city = $_POST['city'];
$state = $_POST['state'];
$zipcode = $_POST['zipcode'];
$phone = $_POST['phone'];
$distance = $_POST['distance'];
# assign null to values for use with isset function to identitfy required fields with no value
$nofirst = null;
$nolast = null;
$noemail = null;
$noaddress1 = null;
$noaddress2 = '';
$nocityErr = null;
$nostate = null;
$nozipcode = null;
$nophone = null;
$nodistance = null;
# if value of variable for required field is nothing, assign something other than null to $no variable
if($first == "") {$nofirst = '';}
if($last == "") {$nolast = ''; if($email == "") {$noemail = '';}
if($address1 == "") {$noaddress1 = '';}
if($address2 == "") {$noaddress2 ='';}
if($city == "") {$nocity = '';}
if($state == "") {$nostate = '';}
if($zipcode == "") {$nozipcode = '';}
if($phone == "") {$nophone = '';}
else {
$insertsql = "INSERT INTO `runner`(`fname`, `lname`, `email`, `address1`, `address2`, `city`, `state`, `postalcode`, `phone`, `distance`)
VALUES ('$first','$last','$email','$address1','$address2','$city','$state','$zipcode','$phone','$distance')";
echo $insertsql;
mysql_query($lrconnect, $insertsql) or die("Insert failed ". mysql_error($lrconnect));
echo "connected";
$inserted = '';
}
}
?>
这是我得到的错误:
INSERT INTO `runner`(`fname`, `lname`, `email`, `address1`, `address2`, `city`, `state`, `postalcode`, `phone`, `distance`) VALUES ('Crystal','Yang','cykher@gmail.com','55555 Avenue','','Chicago','FL','39485','5555555555','5K')
插入失败
答案 0 :(得分:0)
使用mysqli_query
函数,您可以将连接放在第一位。但是,您使用的是mysql_query
,它将查询放在第一位,连接放在第二位。
http://php.net/manual/en/function.mysql-query.php
正如评论中所提到的,你真的不应该只是将用户通过$_POST
提交的数据直接插入到数据库中。评论中还提到,您应该使用mysqli_*
代替。这会使你的语法正确。
要将其转换为mysqli
,还有很多工作要做。基本上,您只需在通常调用i
的每个地方的末尾添加mysql
。您还可以切换连接和查询以使连接成为第一个,就像您在代码中一样。最后,您的连接现在采用第4个参数而不是3,这很好,因为您不需要单独调用来指定要使用的数据库。
以下是一个例子:
<?php
$link = mysqli_connect('HOST', 'USER', 'PASS', 'DATABASE');
$q_test = "SELECT id FROM table";
$r_test = mysqli_query($link, $q_test) or trigger_error("Cannot Get ID: (".mysqli_error().")", E_USER_ERROR);
while ($row_test = mysqli_fetch_array($r_test)) {
print "ID: ".$row_test['id'];
}
答案 1 :(得分:-1)
无需使用与mysql_query函数的连接。
如果您使用的是mysqli_query函数,则必须在该函数中使用连接参数。
所以解决你的问题是。
mysql_query($ insertsql)或死(“插入失败”.mysql_error($ lrconnect));