我在尝试将网址添加到mySQL数据库时遇到问题。
字符串是一个URL:
http://pbs.twimg.com/profile_images/1708867059/405000_10150426314376065_707061064_8645107_703731598_n_normal.jpg
我得到的错误是:
Error description: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '://pbs.twimg.com/profile_images/1708867059/405000_10150426314376065_707061064_86' at line 1
似乎它不允许我添加网址,我认为某些字符有问题,但我不知道是什么?
我的SQL是:
INSERT INTO accounts (name,consumerkey,consumersecret,pic_url) VALUES ($twitterID,$consumerkey,$consumersecret,$picture_url)"
答案 0 :(得分:0)
通过在定制的sql字符串中添加几个字符(如'
或"
),您无法真正解决这类问题!
相反,要了解在php中编写sql的真正方法(这就像一个非常严格保密的秘密),即使用PDO statements。这将允许您使用像(:twitterID, :consumerKey, :consumerSecret, :pictureUrl)
这样的播放器,它将接受复杂的变量,例如网址和任何垃圾邮件用户更优雅地发送。
从长远来看,这将为您节省很多麻烦和时间。
答案 1 :(得分:0)
你需要引用字符串值和SQL会抱怨的任何其他字符,在这种情况下它是冒号;见下文。
($twitterID,$consumerkey,$consumersecret,'$picture_url')
或
('".$twitterID."','".$consumerkey."','".$consumersecret."','".$picture_url."')
如果您想引用所有值。
旁注:您可以删除整数变量周围的引号。
I.e。:
这基于并且没有看到代码的其余部分如何:
$picture_url = "http://pbs.twimg.com/profile_images/1708867059/405000_10150426314376065_707061064_8645107_703731598_n_normal.jpg";
:
- 就在那附近,结肠。...right syntax to use near '://pbs.twimg.com ^ right there
您也可以使用:
VALUES ($twitterID, $consumerkey, $consumersecret, '" .$dbcon->real_escape_string($picture_url) . "')";
$dbcon
是数据库连接变量的示例,基于mysqli_
语法。
您尚未说明您使用的是哪种MySQL API。