无法通过php在mysql表中插入数据

Posted

技术标签:

【中文标题】无法通过php在mysql表中插入数据【英文标题】:Unable to insert data in mysql table via php 【发布时间】:2017-07-25 02:21:21 【问题描述】:

我无法将数据插入到 mysql 表中。我的代码有什么问题? 这是我使用的php代码。我在提交时没有收到任何回复。 php 在包含 html 表单的同一页面中使用,所以我的属性是 action="" 和 method="post"。请帮忙。 enter code here

<?php
    ob_start();
    session_start();
    require_once 'dbconnect.php';

    // if session is not set this will redirect to login page
    if( !isset($_SESSION['user']) ) 
        header("Location: index.html");
        exit;
    
    // select loggedin users detail
    $res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
    $userRow=mysql_fetch_array($res);


    if ( isset($_POST['sub']) ) 

        // clean user inputs to prevent sql injections
        $name1 = $_POST['name1'];
        $name2 = $_POST['name2'];
        $name3 = $_POST['name3'];
        $name4 = $_POST['name4'];
        $name5 = $_POST['name5'];
        $name6 = $_POST['name6'];
        $name7 = $_POST['name7'];
        $name8 = $_POST['name8'];
        $name9 = $_POST['name9'];


        if( !$error ) 

            $query = "INSERT INTO users(name1,name2,name3,name4,name5,name6,name7,name8,name9) VALUES('$name1','$name2','$name3','$name4','$name5','$name6','$name7','$name8','$name9') WHERE userId=".$_SESSION['user'];
            $res = mysql_query($query);

            if ($res) 
                $errTyp = "success";
                $errMSG = "Successfully registered, you may login now";
                unset($name1);

             else 
                $errTyp = "danger";
                $errMSG = "Something went wrong, try again later...";   
            
            

?>

【问题讨论】:

请注意:您没有“清理”任何东西,也没有采取任何措施来阻止 SQL 注入。立即使用参数。 我支持第一条评论 - 但如果您正在学习并且这不会投入生产......首先让我跳出来的是插入后的 WHERE。您如何为不存在的事物指定标准?您将使用 WHERE 进行 UPDATE 而不是 INSERT 我知道我已经简化了代码只是为了理解。但它仍然无法正常工作 哎呀,你是对的@SamiKuhmonen。非常感谢! if语句中的$error参数是什么, 【参考方案1】:

正如 Alex.Barylski 在评论中指出的那样,INSERT 语句会创建一个新行,因此您不能使用 WHERE 子句(用于检查现有行...)。如果要更新已存在的行,请使用以下语句代替 INSERT 语句:

     $query = 'UPDATE users SET name1 = "$name1", name2 = "$name2", name3 = "$name3" WHERE userId=' . $_SESSION['user'];

还请注意,您可以使用 mysql_affected_rows() 来检查您的 UPDATE 查询是否成功,请参阅此问题:How do I tell when a MySQL UPDATE was successful versus actually updated data?

【讨论】:

以上是关于无法通过php在mysql表中插入数据的主要内容,如果未能解决你的问题,请参考以下文章

MySQL插入数据

无法在 php 中使用 MYSQL INSERT INTO

通过 PHP 将数据插入 MySQL 表时出错

无法在 MySQL 表中插入 ♥ 字符

Php,MySql - 将数据作为键值对插入两个表中

MySQL 插入数据 通过命令提示窗口插入数据