我正在尝试使用 html 和 php 制作一个表单来更新 mysql 数据库。
数据库更新(自动增量)键,但不向值添加任何字符串。 我搜索过有类似问题的人,但由于他们的代码与我的不同,我无法理解(我是 php 和 mysql 的菜鸟) 我认为我的问题是我使用 html 获取的方式价值观,但我可能是错的
<form action=submitform.php method=GET>
Name:<input type="text" name="cuName" size=20 maxlength=20><br>
Password:<input type="password" name="password" size=20 maxlength=45><br>
Account:<input type="text" name="account" size=20 maxlength=45><br>
Phone:<input type="tel" name="phone" size=10 maxlength=10><br>
Email:<input type="text" name="email" size=20 maxlength=45><br>
<input type=submit>
</form>
我的PHP是
<?php
mysql_connect(localhost, myUsername, "myPassword");
mysql_select_db(myDatabaseName);
mysql_query("INSERT INTO Customer (cuName, password,
account, phone, email)
Values('$cuName', '$password', '$account',
'$phone', '$email')");
echo $cuName ." thank you for reserving!";
print ($cuName);
?>
提前感谢您的任何帮助
您的代码依赖于要打开的REGISTER_GLOBALS
;出于安全原因,它通常被关闭。
应将$cuName
替换为$_GET['cuName']
以获取从窗体发送的值。
此外,您应该转义进入数据库的任何值,否则您可能会面临 SQL 注入漏洞。
清理这两种情况的代码会导致如下所示:
<?php
if (!mysql_connect(localhost, myUsername, "myPassword")) {
print 'There was an error connecting to the database'.mysql_error();
exit();
}
if (!mysql_select_db(myDatabaseName)) {
print 'Could not select db. The error was: '.mysql_error();
exit();
}
$query = "INSERT INTO Customer (`cuName`, `password`, `account`,`phone`,`email`)";
$query .= "VALUES (";
$query .= "'".mysql_real_escape_string($_GET['cuName'])."','";
$query .= mysql_real_escape_string($_GET['password'])."','";
$query .= mysql_real_escape_string($_GET['phone'])."','";
$query .= mysql_real_escape_string($_GET['email'])."'";
if (!mysql_query($query)) {
print 'There was an error inserting '.$query.'. Error was '.mysql_error();
} else {
echo $_GET['cuName']." thank you for reserving!";
}
print $_GET['cuName'];
?>
我还添加了一些错误检查。您应该始终检查依赖于外部系统(如数据库)的功能的结果,因为您永远不知道数据库的状态是什么(它可能已关闭,无法正常工作等)。因此,您应该始终检查并打印任何错误消息。
您无需在任何地方定义任何 GET 值。 未定义$cuName等。
每个值都需要与 $_GET 相关联。 IE,
$cuName = $_GET['cuName']
但是,您还需要确保不要插入尚未清理的数据,以防止SQL注入。这方面的一个例子是:
$cuName = mysql_real_escape_string($_GET['cuName']);
所以,试试这个:
<?php
mysql_connect(localhost, myUsername, "myPassword");
mysql_select_db(myDatabaseName);
//Define Variables
$cuName = mysql_real_escape_string($_GET['cuName']);
$password = mysql_real_escape_string($_GET['password']);
$account = mysql_real_escape_string($_GET['account']);
$phone = mysql_real_escape_string($_GET['phone']);
$email = mysql_real_escape_string($_GET['email']);
mysql_query("INSERT INTO Customer (cuName, password,
account, phone, email)
Values('$cuName', '$password', '$account',
'$phone', '$email')") or die (mysql_error());
echo $cuName ." thank you for reserving!";
print ($cuName);
?>
最好使用:
$cuname = $_GET['cuname'];
喜欢这个。。。。因为你的表单方法是在"GET"上,我的建议是POST数据而不是GET。