我正在尝试通过用PHP编写的网页将一些简单的用户数据添加到数据库中,但是以下代码(更具体地说,第三行)打破了页面。我使用错误的MySQL功能吗?我很确定我的查询格式正确。
mysql_query("CREATE TABLE stats ( userAgent CHAR(20) )");
$userAgent = $_SERVER["HTTP_USER_AGENT"];
mysql_query("INSERT INTO stats VALUES ("$userAgent"));
答案 0 :(得分:6)
可以像这样修复PHP错误(注意点,它用于将字符串“粘合”在一起):
mysql_query("INSERT INTO stats VALUES (".$userAgent.")");
此外,您应该执行一些SQL注入保护,用户代理字符串是用户定义的(有修改它的工具),因此需要对其进行清理。此外,user-agent是一个字符串,因此您需要将其放在单引号之间。
mysql_query("INSERT INTO stats VALUES ('" . mysql_real_escape_string($userAgent) . "')");
另一个重要的事情是错误处理 - 回显错误描述是查找SQL语法中的错误所必需的。
mysql_query("INSERT INTO stats VALUES ('" . mysql_real_escape_string($userAgent) . "')")
or die("MySQL Error: " . mysql_error());
答案 1 :(得分:1)
应该是:
mysql_query("INSERT INTO stats VALUES (".$userAgent.")");
答案 2 :(得分:1)
不要这样做
答案 3 :(得分:0)
您是否正在转发$userAgent
变量?
在前往数据库附近的任何地方之前,必须“清理”数据。
<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());
// Clean
$userAgent = mysql_real_escape_string($_SERVER["HTTP_USER_AGENT"]);
// Query
mysql_query("INSERT INTO stats VALUES ($userAgent)");
?>