Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP未插入MySQL数据库_Php_Mysql - Fatal编程技术网

PHP未插入MySQL数据库

PHP未插入MySQL数据库,php,mysql,Php,Mysql,我目前很难理解为什么下面的脚本将成功返回到浏览器,但实际上没有将数据插入数据库。 我知道我使用的是旧的MySQL指令,但我怀疑这会造成这个问题。 提前谢谢阿利斯泰尔 <?php ob_start(); $host="localhost"; // Host name $username="XXXXXX"; // Mysql username $password="XXXXXXXXXXXXXXXXXXX"; // Mysql password $db_name="XXXXXXXX";

我目前很难理解为什么下面的脚本将成功返回到浏览器,但实际上没有将数据插入数据库。 我知道我使用的是旧的MySQL指令,但我怀疑这会造成这个问题。 提前谢谢阿利斯泰尔

<?php

ob_start();
$host="localhost"; // Host name 
$username="XXXXXX"; // Mysql username 
$password="XXXXXXXXXXXXXXXXXXX"; // Mysql password 
$db_name="XXXXXXXX"; // Database name 
$tbl_name="XXXXXXXXXX"; // Table name 

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// Define Variables
$myusername=$_POST['username']; 
$password1=$_POST['password1']; 
$password2=$_POST['password2']; 
$emailadd=$_POST['emailadd']; 

if($password1==$password2){
    //Ecnrypt Password Using SHA512
    $password1 = hash("sha512", $password1);
}

else {
    //Passwords don't match return user to form with parameter
    header("location:adduser.php?pwnomatch");
}

//Check user doesn't already exist
$sqlcheckuser="SELECT * FROM $tbl_name WHERE username='$username'";
$result1=mysql_query($sqlcheckuser);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result1);

//If user exists redirect back to login form
if($count==1){
    header("location:adduser.php?userexist");
}

// To protect MySQL injection (more detail about MySQL injection)
$username = stripslashes($myusername);
$password1 = stripslashes($mypassword);
$emailadd = stripslashes($emailladd);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$emailadd = mysql_real_escape_string($emailladd);
$sqlinsertuser="INSERT INTO $tbl_name ('username', 'password', 'emailaddress' VALUES ($username, $password1, $emailadd)";
mysql_query($sqlinsertuser);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result2);

// Register user then redirect to "viewuser.php" with success parameter
header("location:viewuser.php?success");

ob_end_flush();
?>
列名上没有括号。因此,您的查询应该如下所示:

INSERT INTO $tbl_name (`username`, `password`, `emailaddress`) VALUES ($username, $password1, $emailadd)
我在原来的帖子中没有注意到的东西;您使用了引号而不是反勾号

查询中的引号通常表示字符串,此处解释了反勾号:


您的查询字符串中有很多错误。应该是

$sqlinsertuser="INSERT INTO $tbl_name (`username`, `password`, `emailaddress` )
        VALUES( '$myusername', '$mypassword', '$emailadd' )";
请注意,在传递字段名时使用了反勾号而不是撇号。并在值内使用引号


您在查询中使用了错误的变量。

SQL注入,我来了:我没有投反对票,但如果我投了反对票,那是因为倒逗号不是反对票。当然,倒逗号在涉及字符串时仍然很有用,但是你的名字有+4票,谁在乎呢-
$sqlinsertuser="INSERT INTO $tbl_name (`username`, `password`, `emailaddress` )
        VALUES( '$myusername', '$mypassword', '$emailadd' )";