Php - 尝试将url插入MySQL表

时间:2011-05-30 02:40:49

标签: php mysql url insert

我只是想用php将这些对象插入到表中。

$sql = 'INSERT INTO table VALUES( '.$active.' , '.$id.' , '.$time.' , '.$url.' ,"some string" )';

上述代码中的网址为:http://www.youtube.com/watch?v=sAYc3gGjYW8

当我将url列留空时,它可以工作,当我在其中放入一个url然后它不起作用,我得到以下错误。

“错误:您的SQL语法中有错误;请查看与您的MySQL服务器版本对应的手册,以便在附近使用正确的语法 '://www.youtube.com/watch?v = sAYc3gGjYW8,“some string”)'  在第1行。“

问题:

为什么网址不像普通字符串那样插入?

在MySQL接受之前,我需要在url_string上执行某种功能吗?

PS - url列目前是VARCHAR(256)。

任何帮助赞赏的人......

5 个答案:

答案 0 :(得分:7)

你没有逃避你的输入。 mysqli_real_escape_string()是你的朋友。

记住所有输入都是邪恶的。验证和清理,否则你将受到一系列肮脏的影响,例如超出范围的数据(例如当字段为varchar(10)时为124个字符串长字符串)以打开代码到SQL注入攻击。

示例:

$safe_url = mysqli_real_escape_string($database_connection_object, $url);

此外,您可能希望保存一些击键,将该字符串更改为双引号并插入变量 - 即"blah blah $some_var foo foo"'blah blah ' . $some_var . ' foo foo'相同

答案 1 :(得分:3)

虽然我完全同意mysql_real_escape_string()条评论,但您似乎忘记将网址包含在引号中,就像任何其他字符串一样。

$sql = 'INSERT INTO table VALUES( '.$active.' , '.$id.' , '.$time.' , "'.$url.'" ,"some string" )';

你可以通过查看MySQL错误来判断:

://www.youtube.com/watch?v=sAYc3gGjYW8 ,"some string" )

网址末尾没有引号:)

答案 2 :(得分:2)

你需要逃避你的输入。请查看mysql_real_escape_stringmysqli_real_escape_string。您可能还想查看像PDO这样的数据库抽象层。

假设您正在使用mysql_*过程函数,并且在连接到数据库之后,您的脚本应如下所示:

$sql = 'INSERT INTO table VALUES( '.$active.' , '.$id.' , '.$time.' , "'.mysql_real_escape_string($url).'" ,"some string" )';

我也强烈建议转义其他值:

$sql = 'INSERT INTO table VALUES( "'.mysql_real_escape_string($active).'" , "'.mysql_real_escape_string($id).'" , "'.mysql_real_escape_string($time).'" , "'.mysql_real_escape_string($url).'" ,"some string" )';

除非它们是SQL表达式,否则您之前已将它们转义。

答案 3 :(得分:1)

确保您已使用mysql_real_escape_string($string)之类的内容将所有输入转义到数据库中。它将阻止你对SQL注入攻击开放,并确保正确读取字符串。

答案 4 :(得分:-1)

$id = $_GET['id'];$name = $_GET['name'];$lat = $_GET['lat'];$long = $_GET['long']; $query = mysql_query("INSERT INTO dbname.tablename ( ID为, {名称{1}} LAT , {长{1}}