通过PHP将数据插入MySQL表

时间:2010-08-14 00:31:56

标签: php mysql

我正在尝试通过用PHP编写的网页将一些简单的用户数据添加到数据库中,但是以下代码(更具体地说,第三行)打破了页面。我使用错误的MySQL功能吗?我很确定我的查询格式正确。

mysql_query("CREATE TABLE stats ( userAgent CHAR(20) )");

$userAgent = $_SERVER["HTTP_USER_AGENT"];
mysql_query("INSERT INTO stats VALUES ("$userAgent"));

4 个答案:

答案 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)

Eton B.有正确的答案,但请注意您编写的代码将让您受little Bobby Tables的支配。

不要这样做

答案 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)");
?>