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
aPRIMARY 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);