【发布时间】:2023-03-26 03:51:01
【问题描述】:
我在 MySQL 中编写了一个表名“User”,其中包含以下字段:UserID、UserName、Password、eMail、DisplayName、Score、timeStamp。字段 UserID 是 int AUTO_INCREMENT,时间戳是 dateTime。我正在尝试使用 php 文件将值插入表中。这是我的 php 文件:
mysql_connect("mysql.1freehosting.com","u948577195_uname","p7CraCuRAw");
mysql_select_db("u948577195_dbnam");
$uName = $_GET['uname'];
$pass = $_GET['password'];
$mail = $_GET['email'];
$disName = $_GET['disnam'];
$date = $_GET['dt'];
$sql=mysql_query("INSERT INTO User
VALUES ('$uName', '$pass', '$mail', '$disName', 0, '$date')");
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
?>
我使用这个连接字符串激活文件:
http://pickupfriend.fulba.com/android_project/query3.php?uname=Test&password=p1&email=ml&disnam=Test&dt=21:12:30 2014-07-07
我在日期的秒和年之间有一个空格,可以吗?运行连接字符串后,我收到此错误:
Parse error: syntax error, unexpected T_STRING in /home/u948577195/public_html/android_project/query3.php on line 13
我做错了什么?如何更正我的连接字符串? 提前谢谢!
【问题讨论】:
-
顺便说一句,你很容易受到这段代码的 SQL 注入攻击。
-
如果您在此处发布正确的凭据,也会更改数据库服务器的凭据:)
-
如果这是在公共互联网上,您将面临极端风险。你需要仔细阅读proper SQL escaping,这样你就不会像这里那样创建任何更严重的SQL injection bugs。此外,
mysql_query不应在新应用程序中使用,它已从 PHP 中删除。 PDO is not hard to learn 是一种更安全的查询方式。$_GET数据从不直接进入查询。