PHP脚本没有将值插入mySQL数据库

时间:2014-06-18 12:16:03

标签: php mysql

我的插件无法正常工作,无论如何都会在数据库中插入任何内容。

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

我做错了什么? :( 是的,我已经在剧本的早期连接到了数据库。

编辑:继承人我的整个.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");

}

对于凌乱的代码感到抱歉。我感觉我已经留下了一些非常明显的东西。

4 个答案:

答案 0 :(得分:1)

在PHP级别:

在PHP中,您应该设置错误级别,以便在事情变得奇怪时让您知道:

error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('scream.enabled', false);

使用这些设置,您将开始看到一些PHP错误,例如尝试访问您希望由DB填充的数组的内容,但事实上并非如此(并且它们甚至可能不是数组)。这些是让您认为SQL查询由于某种原因失败的提示。

在DB级别:

很可能你的数据库正在告诉你究竟发生了什么,你只是不检查它说的是什么。数据库中的错误以3种方式显示:空结果,错误而不是预期结果,如果您检查它,则可以使用错误消息。

每一步后检查错误:

  • 连接到DB;
  • 选择数据库(如果您使用mysql_*mysqli_*功能);
  • 准备声明(如果您正在使用mysqli_PDO);
  • 执行查询;

我将假设您使用mysqli_*函数并提供示例(原始here):

/** 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);
}

答案 1 :(得分:0)

(1) do this,  id as auto increment then no need to include at insert time 

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

答案 2 :(得分:0)

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

// add the following code below the line above

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

答案 3 :(得分:-3)

使用撇号代替严重重音 `=严重的口音,或者(因为有人需要发明一个词)反击 '=撇号,或单引号

(`id`, `username`, `password`)

你应该使用这个

('id', 'username', 'password')