PHP脚本未将值插入mySQL数据库

PHP脚本未将值插入mySQL数据库,php,mysql,Php,Mysql,我的插入不起作用,它不能在数据库中插入任何内容 $sql= "INSERT INTO 'users' (`id`, `username`, `password`) VALUES (NULL, '$newusername', '$newpassword')"; 我做错了什么( 是的,我在脚本前面已经连接到DB 编辑:这是我的全部.php文件 <?php if (isset($_POST['submit'])){ $newusername = $_POST['newuserna

我的插入不起作用,它不能在数据库中插入任何内容

$sql= "INSERT INTO 'users' (`id`, `username`, `password`) VALUES (NULL,   '$newusername', '$newpassword')";
我做错了什么( 是的,我在脚本前面已经连接到DB

编辑:这是我的全部.php文件

<?php
if (isset($_POST['submit'])){

    $newusername = $_POST['newusername'];
    $newpassword = $_POST['newpassword'];
    $newpassword2 = $_POST['confirmnewpassword'];

    $query = "SELECT * FROM users WHERE username = '$newusername' AND password = '$newpassword'";
if(strlen($newusername) > 5 || strlen($newusername)< 25){
echo "username length check is fine<br>";
    if(strlen($newpassword) > 4 || strlen($newpassword2) < 25){
        echo "Pass check worked lel<br>";
        if($newpassword == $newpassword2 ){
            echo "Should all be working!<br>";
            $connect = mysqli_connect("localhost","root","") or die("Couldnt connect!");
            mysqli_select_db($connect,"phplogin") or die("Couldnt find DB.");

            $sql="INSERT INTO users (username,password) VALUES('$newusername','$newpassword')";


        }
        else
            die("Passwords did not match");
    }
    else
        die('Password wasnt long enough');
}
    else
        die("Username was not long enough");

}

使用撇号而不是严肃的重音
`=严重的口音,或(因为某人需要发明一个词)反勾号
'=撇号,或直接单引号

(`id`, `username`, `password`)
你应该用这个

('id', 'username', 'password')
在PHP级别: 在PHP中,您应该习惯于设置错误级别,以便在事情变得奇怪时让您知道:

error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('scream.enabled', false);
通过这些设置,您将开始看到一些PHP错误,例如试图访问预期由DB填充但实际上不是(甚至可能不是数组)的数组的内容。这些提示让您认为SQL查询由于某种原因失败

在DB级别: 最有可能的情况是,您的数据库正在准确地告诉您发生了什么,而您只是没有检查它所说的内容。来自数据库的错误以三种方式显示:空结果、false而不是预期结果、如果您检查错误消息,则会显示错误消息

在每个步骤后检查错误:

  • 连接到数据库
  • 选择DB(如果您使用的是
    mysql\u*
    mysqli\u*
    函数)
  • 准备语句(如果您使用的是
    mysqli\ucode>或
    PDO
  • 执行查询
我假设您使用的是
mysqli.*
函数,并给出一个示例(原文):


id
a
PRIMARY KEY
?因为如果是这样,您就不能插入
NULL
值。@Daan NULL会自动转换为自动增量值(在MySQL上)。请尝试在表名上使用反勾号,而不要引用显示连接部分的代码(删除密码等)。向我们展示实际运行查询的代码。告诉我们您是在使用mysql、mysqli还是PDO。@DeepakGoswami说的TaylorSteve…您只是在构建一个包含sql查询的字符串…您根本没有调用
mysqli\u query
函数。基本上,其中一个“是您的计算机已插入的”问题类型。`通常用于显示列名……因此它们在这方面没有做错。值应该用记号括起来。@JustineE,你是对的,只有在值部分使用了严重重音时才会受到影响。..+1对于正确的信息,进行此更改是不正确的,并且会导致问题中的查询抛出mysql错误。@TaylorStevens只是在同一问题上对每一个可能的变化都更加努力,对你没有多大帮助。这就像试图用暴力破解密码——尝试每一个密码——最终可能会奏效,但不值得。@TaylorStevens停止尝试人们提供的每一个答案,并开始理顺密码背后的问题问题。找出你当前的东西不起作用的原因,显示你收到的错误消息,然后如果错误消息不是不言自明的,我们将能够提供一些真正的建议。我已经这样做了,所有内容都打印得很好,它会显示他们在表单中输入的用户名/密码,并在他插入了函数是的,但是你在插入函数期间做什么来检查错误?@TaylorStevens你在检查PHP错误我说的是DB错误。每个不同的mysql库(mysql、mysqli和PDO)有自己的错误检查功能。该错误检查功能为您提供数据库返回的信息。@JustinE我不太确定我是否会在插入功能期间捕获错误,因为现在我只是使用echo@TaylorStevens查看我的示例,了解如何捕获mysql错误。
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('scream.enabled', false);
/** somewhere in the DB connection file */
$mysqlErrors = array();

/*...*/

/** somewhere in your logic files */
$rows = mysqli_query($link, "SET a=1");
if ($rows === false) {
    $mysqlErrors[] = mysqli_error($link);
}

/*...*/

/** somewhere in your template files */
foreach ($mysqlErrors as $mysqlError) {
    printf("Errormessage: %s\n", $mysqlError);
}
$sql= "INSERT INTO 'users' ( `username`, `password`) VALUES ('$newusername', '$newpassword')";

// add the following code below the line above

$result = mysqli_query($con, $sql);