mysql_query不将表单信息发送到数据库

时间:2015-06-12 02:26:08

标签: php mysql database

我似乎无法弄清楚为什么我的表单数据不会被发送到数据库。我尝试过多种编码方式,这是我唯一可以获得"结果的方式"

这是我的代码:

<?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')

插入失败

2 个答案:

答案 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));