此PHP脚本中没有错误,但不填充SQL数据库

此PHP脚本中没有错误,但不填充SQL数据库,php,sql,login,Php,Sql,Login,我真的不知道这是怎么回事,我已经为此绞尽脑汁整整两个小时了。我所要做的就是从表单中的两个字段中获取信息并将其插入数据库。我知道我的剧本很基础,也很不安全,但我只是在学习。。。它不会在生产现场使用。它允许我提交数据,并输出“谢谢你,你已经注册了…”,但它从不将其插入数据库。我已经仔细检查了我所有的连接设置,等等。。。我不懂 我的代码如下: <?php mysql_connect("localhost", "USERNAME", "PASSWORD") or die(mysql_error

我真的不知道这是怎么回事,我已经为此绞尽脑汁整整两个小时了。我所要做的就是从表单中的两个字段中获取信息并将其插入数据库。我知道我的剧本很基础,也很不安全,但我只是在学习。。。它不会在生产现场使用。它允许我提交数据,并输出“谢谢你,你已经注册了…”,但它从不将其插入数据库。我已经仔细检查了我所有的连接设置,等等。。。我不懂

我的代码如下:

<?php 
 mysql_connect("localhost", "USERNAME", "PASSWORD") or die(mysql_error()); 
 mysql_select_db("DATABASE_NAME") or die(mysql_error()); 
 if (isset($_POST['submit'])) { 
 mysql_query("INSERT INTO members (username, password) VALUES ('".$_POST['myusername']."', '".$_POST['mypassword']."')") or die(mysql_error());
}
?>

<html>
<body> 
<h1>Registered</h1>
<p>Thank you, you have registered - you may now login</a>.</p>
</body>
</html>

首先,如果查询已准备好进行注入攻击,我强烈建议您查看准备好的语句

回到你的处境


在您查询之后,它会立即告诉您查询发生了什么…

我猜
如果(isset($\u POST['submit'])
没有触发,请确保它是name属性而不是id。发布表单代码会有很大帮助。

这里唯一可能出错的是“if”语句的计算结果为false。如果出现任何其他错误,您将得到一个SQL错误输出,而不是“谢谢”页面


因此,首先检查“submit”是否是表单元素的实际名称,并检查其是否已设置。还要检查您是否使用POST方法提交表单

进一步了解Zac的答案,您的提交按钮根本没有名称。因此,
isset($\u POST['submit'])
将始终为false,并且您的查询将永远不会运行


因为您刚刚熟悉PHP,所以可以很容易地调试这样的情况,即使用或检查变量。如果您查看$\u POST,发现它没有名为“submit”的键,您会意识到您的提交测试有缺陷。

您在表单中使用了错误的方法:

<FORM name="form1" ACTION="register.php" METHOD=get>
但在php中检查
POST
更可靠的方法是使用:

if ($_SERVER['REQUEST_METHOD'] === 'POST')

if(isset
中的块是否执行?(如果不确定,请尝试在那里添加
echo
)?并阅读类似的内容。您确定已将错误报告设置为最大值吗?请删除isset进行调试。您的查询易受SQL注入攻击;任何人都可以通过在POST数据中提供正确的值来执行任意查询,除非在将输入连接到查询中时使用转义。我添加了一个echo,它确实执行了ute。不太清楚发生了什么。我知道SQL注入的危险性,正如我所说的……它不会在实时网站上使用。var_dump($_POST);另外,mysql_查询的输出(…将是手动的,正如OP所说,这不会在production@Paul是的,但基于[我的]感知到的代码质量当它移动到生产代码时,提供一些指针并没有什么坏处。@sp4rt4n423在OP中没有html,但如果var_转储没有显示,这将是一个很好的迹象,表明您没有命中该代码块。我添加了它,它给了我:string(0)“-还有var_dump($\u POST());给了我:array(0){}@sp4rt4n423建议它执行正常…试着在密码周围加上反勾-我想这是mysql中的一个保留字“INSERT-INTO members(`username`,`password`)…”,在其他答案中尝试了其他一些东西,仍然没有效果:-?
<FORM name="form1" ACTION="register.php" METHOD=get>
<FORM name="form1" ACTION="register.php" METHOD="POST">
<input type="submit" name="submit" value="Register" class="loginButton">
if ($_SERVER['REQUEST_METHOD'] === 'POST')