微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 我无法将表单数据导入数据库.我究竟做错了什么?

代码更新,仍然没有工作.
我知道我显然使用的 mysql函数已经过时了.但是现在我想要的只是这个代码才能运行.我想知道我做错了什么:(

我是PHP数据库的新手……我一直在努力让简单的html表单数据进入数据库表.我只是不能让它工作:(任何人都可以帮助,看看我的代码有什么问题吗?我刚刚在数据库中用字段ID,FirsTNAME和SURNAME完成了一个简单的表.
这是代码

<?PHP 
    //connect to database
    $MysqL_host = 'localhost';
    $MysqL_user = 'root';
    $MysqL_pass = '';

    $MysqL_db = 'test';

    if (!MysqL_connect ($MysqL_host,$MysqL_user,$MysqL_pass)||!MysqL_select_db ($MysqL_db) ) {
        die(MysqL_error());

    }   

    // Code     
    if (isset($_POST['firstname'])&&
    isset($_POST['surname'])) {

    $firstname = $_POST['firstname'];
    $surname = $_POST['surname'];

    if (!empty($username)&&!empty($password)) {
    $query = "INSERT INTO `test`.`test_tabell` 
    VALUES ('','" . MysqL_real_escape_string($firstname) . "','" . MysqL_real_escape_string($surname) . "')";
    /*$query = "INSERT INTO `test`.`test_tabell` VALUES (``,`.$firstname.`,`.$surname.`)"; */
    $query_run = MysqL_query($query);
if (!$query_run) echo MysqL_error(); 
}
}
    ?>

    <form action="add.PHP" method="POST">
    Firstname:<br> <input type="text" name="firstname" value="<?PHP if (isset($firstname)) { echo $firstname; } ?>"><br><br>
    Surname:<br> <input type="text" name="surname" value="<?PHP if (isset($surname)) { echo $surname; } ?>"><br><br>
    <input type="submit" value="Submit">
    </form>

谢谢!

不要使用MysqL特定的语法,它已经过时了,当你需要做一些高级的东西时它开始很烦人,你不能切换到sqlite或postgresql.

我建议使用PDO,你可以这样做:

// Usage:   $db = connectToDataBase($dbHost,$dbname,$dbUsername,$dbPassword);
// Pre:     $dbHost is the database hostname,//          $dbname is the name of the database itself,//          $dbUsername is the username to access the database,//          $dbPassword is the password for the user of the database.
// Post:    $db is an PDO connection to the database,based on the input parameters.
function connectToDataBase($dbHost,$dbPassword)
{
    try
    {
         return new PDO("MysqL:host=$dbHost;dbname=$dbname;charset=UTF-8",$dbPassword);
    }
    catch(PDOException $PDOexception)
    {
        exit("<p>An error ocurred: Can't connect to database. </p><p>More preciesly: ". $PDOexception->getMessage(). "</p>");
    }
}

然后初始化变量(我想你忘了定义数据库名称);

$host = 'localhost';
$user = 'root';
$dataBaseName = 'databaseName';
$pass = '';

现在您可以通过访问您的数据库

$GLOBALS['db'] = connectToDataBase($host,$databaseName,$user,$pass);

现在您有一个PDO数据库donnection的实例.

我想要指出的一件事是,你对sql注入是有用的,你想在查询中使用预准备语句,如:

$query = "INSERT INTO test(first_name,sur_name) VALUES (:firstname,:surname);";

我们将在查询中执行两个变量$firstName和$surName,使它们替换:firstName和:surName的值,让我先创建一个简单的插入函数给你看:

function insertFunction($db,$query,$firstName,$surName)
{
    $statement = $db->prepare($query);
    return $statement->execute(array(":firstName" => $firstName,":surName" => $surName));
}

所以你很容易做类似的事情

$firstName = 'Smith';
$surName = 'John';
$db = $GLOBALS['db'];

$success = insertFunction($db,$surName);

现在,您可以通过检查$success是true还是false来检查它是否成功.

如果你想看到更高级的PDO使用(多行等),那么你可以在这里查看我的一条评论Javascript function as php?
(不是最高评论).

我希望这有帮助.如果有什么奇怪的话请评论.

原文地址:https://www.jb51.cc/php/138535.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐