【问题标题】:Data not entered into database from PHP数据未从 PHP 输入数据库
【发布时间】:2014-03-03 03:55:09
【问题描述】:

我正在尝试使用 PHP 将数据输入数据库。

这是我的代码:

<?php
    $username = 'username'; //username for database
    $password = 'password'; //password for database
    $hostname = 'localhost'; //host
    $db_name =  'db_testdrubin'; //name of database

    $db_selected = mysqli_connect($hostname, $username, $password, $db_name)//specify database
    or die ("unable to connect");

    if(isset ($_POST['submit'])){
        $ID = ($_POST['ID']);
        $fname = ($_POST['fname']);
        $lname = ($_POST['lname']);
        $address = ($_POST['address']);
        $city = ($_POST['city']);
        $state = ($_POST['state']);
        $zip = ($_POST['zip']);
        $phone = ($_POST['phone']);
        $email = ($_POST['email']);
        $books = ($_POST['books[]']);
        $comments = ($_POST['comments']);
    }
    else{
        echo'<p>not submitted</p>';
    }
    //up until this point the code works fine

    $query = 'INSERT INTO Student VALUES ($ID, $fname, $lname, $address, $city, $state, $zip, $phone, $email, $books, $comments)';


    $success = $db_selected->query($query);

    if($success){
        $count = $db_selected->affectd_rows;
        echo '<p>$count were added</p>';
    }
    else{
        echo '<p>error</p>';
    }

?>

我知道从 html 表单中正确读取了信息,因为我通过打印各个变量进行了检查。当我提交表单时,我没有收到任何错误消息,只是 if/else 语句中的“错误”回显语句,并且没有数据输入到数据库中。

我也试过这个:

if (!mysql_query($db_selected, $query)){
    echo '<p>error</p>';
}

结果相同。

【问题讨论】:

  • 永远不要输出一个毫无意义的固定不变的“错误”消息,特别是当 mysql 可以告诉你问题是什么时:echo mysql_error(); 而不是。鉴于您构建插入查询的方式,这是一个巨大的语法错误,也是一个巨大的 SQL 注入攻击漏洞。

标签: php html forms submit


【解决方案1】:

改一下

$query = 'INSERT INTO Student VALUES ($ID, $fname, $lname, $address, $city, $state, $zip, $phone, $email, $books, $comments)';

$query = "INSERT INTO Student VALUES ($ID, '$fname', '$lname', '$address', '$city', '$state', $zip, $phone, '$email', '$books', '$comments')";

我的意思是说它的字符串是否像'$string'一样并且也使用

$db_selected->real_escape_string($stringval);

并使用

echo $db_selected->error;

检查你得到的错误。

【讨论】:

  • 好的,我现在看到我的错误在于查询语句本身。我会试着找出错误在哪里。
  • 感谢添加echo $db_selected-&gt;error; 的提示,这告诉我插入语句中的错误在哪里。我的代码现在可以工作了。
【解决方案2】:
$ins="insert into Student (`id`,`fname`,`lname`,`address`,`city`,`state`,`zip`,`phone`,`email`,`books`,`comments`)values
  ('".$ID."','".$fname."','".$lname."','".$address."','".$city."','".$state."','".$zip."','".$phone."','".$email."','".$books."','".$comments."')"; 

mysql_query($ins); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 2013-06-14
    • 1970-01-01
    相关资源
    最近更新 更多