Php 菲律宾元';t更新MySQL表
我的笔记本电脑上有一个“Windows Apache MySQL PHP”服务器。我绝对没有收到任何错误消息,但是当我通过PHP脚本发送东西到MySQL时,MySQL中什么也没有发生(我也通过MySQL命令提示符发送了一些东西,看起来它只是做了一个测试表,没有像我要求的那样在其中放入任何东西,但我不确定我在这种情况下做了所有应该做的事情)。我用另一种方式重新描述了我的整个页面,但仍然不起作用 下面是我的表单的图片,以及MySQL中表格的外观: 系统: Windows 7 Home Premium SP1 64位-- 带ssl0.9.8的Apache 2.4.4 32位-- PHP 5.4.11 32位VC9-- MySQL 5.5.31 64位,带Navicat LitePhp 菲律宾元';t更新MySQL表,php,mysql,database,Php,Mysql,Database,我的笔记本电脑上有一个“Windows Apache MySQL PHP”服务器。我绝对没有收到任何错误消息,但是当我通过PHP脚本发送东西到MySQL时,MySQL中什么也没有发生(我也通过MySQL命令提示符发送了一些东西,看起来它只是做了一个测试表,没有像我要求的那样在其中放入任何东西,但我不确定我在这种情况下做了所有应该做的事情)。我用另一种方式重新描述了我的整个页面,但仍然不起作用 下面是我的表单的图片,以及MySQL中表格的外观: 系统: Windows 7 Home Premiu
<?php
define('DB_HOST', 'localhost');
define('DB_NAME', 'projectedin');
define('DB_USER','root');
define('DB_PASSWORD','');
$con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error());
$db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " .mysql_error());
function NewUser()
{
$userName = $_POST['username'];
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$password = $_POST['password'];
$birthday = $_POST['birthday'];
$gender = $_POST['gender'];
$query = "INSERT INTO users (username,firstname,lastname,password,birthday,gender) VALUES ('$username','$firstname','$lastname','$password','$birthday','$gender')";
$data = mysql_query ($query)or die(mysql_error());
if($data)
{
echo "YOUR REGISTRATION IS COMPLETED...";
}
}
function SignUp()
{
if(!empty($_POST['username'])) //checking the 'user' name which is from Sign-Up.html, is it empty or have some text
{
$query = mysql_query("SELECT * FROM users WHERE username = '$_POST[username]' AND password = '$_POST[password]'") or die(mysql_error());
if(!$row = mysql_fetch_array($query) or die(mysql_error()))
{
newuser();
}
else
{
echo "SORRY...YOU ARE ALREADY REGISTERED USER...";
}
}
}
if(isset($_POST['submit']))
{
SignUp();
}
mysqli_close ($con);
?>
这里有许多问题(稍后将详细介绍),但这可能是您的一个问题:
您尝试如下方式调用新用户函数:
newuser();
但是它被命名为NewUser
。这是区分大小写的,不起作用。查看您的错误日志,查看您在这里遇到的错误
其他问题:
- 您正在使用已弃用的
mysql.*
函数。如果您正在学习PHP,请学习正确的方法并使用mysqli
或PDO
- 您根本没有逃避输入,因此很容易受到SQL注入攻击
- 当函数没有真正为您带来任何价值时,您会随意使用函数
- 当函数名以大写字母开头时,有点脱离了典型的PHP编码标准。这对于PHP来说有点不寻常,尽管这实际上是可行的
您的注册查询中有一个错误:
$query = mysql_query("SELECT * FROM users WHERE username = '$_POST['username']' AND password = '$_POST['password']'") or die(mysql_error());
我将$\u POST[username]
更改为$\u POST['username']
并将$\u POST[password]
更改为$\u POST['password']
此外,您也容易受到MySQL注入的攻击,您应该使用MySQL\u real\u scape\u string函数清理每个$\u POSTvar:$userName=MySQL\u real\u scape\u string($\u POST['userName')代码>
最后,您不应该使用mysql*函数,它们已被弃用 您使用函数的方式是错误的。您还需要检查采取行动的条件。您的代码需要一种不同的方法。非逻辑为什么您同时拥有mysql和mysqli函数?$con和$db需要在每个函数中声明为全局函数,即全局$con,$db;我已经用mysqli函数更改了代码,并转义了函数newuser中除查询之外的所有内容。(当我这样做时,我应该在$POST之前调用$db连接吗?)我还将函数设置为小写,并在Ignacio建议的地方添加了单引号。它仍然没有任何作用。我点击提交,我得到一个没有反馈的白色屏幕。我使用了另一个脚本,它给了我一些反馈(不正确),但它仍然没有发布到MySQL。@Enki检查您的错误日志。如果你没有;如果没有打开错误日志,请打开它。我找不到默认的错误日志,所以我将其设置为在PHP目录中创建一个。我运行页面并点击提交,但没有创建日志。我想我的PHP MySQL安装可能有问题。我可能不得不重做一遍,因为它表现得好像它甚至没有尝试在两个程序之间进行通信。我已经重新安装了PHP和MySQL。我检查并确保我有VC 9、10和11只是为了确保这不会成为问题。我意识到我已经安装了64位MySQL,并将其重新安装为32位,然后我确保在我的PHP目录中有一个32位libmysql.dll(我很惊讶MySQL没有指出这一点,但这个安装一直以来都与正常情况不同)。它仍然不起作用,我肯定它现在不是脚本,因为我有一个测试脚本也不起作用。有什么想法吗?