这是我的代码
mysql_connect('localhost', 'root', 'password');
mysql_select_db('db');
mysql_query("INSERT INTO metabase(url, title, image, description) VALUES('http://www.imgur.com/', '$title', '$image', '$descr')") or die();
它没有显示任何错误,但未在数据库中插入值。我的表名是配置数据库。 url,title,images是varchar(255)和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 's visual storytelling community. Explore, share, and discuss the best visual sto' at line 1
这是描述
The Internet's visual storytelling community. Explore, share, and discuss the best visual stories the Internet has to offer.
所以这是因为'
我如何纠正它?
答案 0 :(得分:2)
在将数据插入数据库之前,需要转义数据。描述中的杂散撇号会导致问题:
$descr = mysql_real_escape_string($descr);
请stop using mysql_*
functions。它们不再被维护,而是officially deprecated。
答案 1 :(得分:1)
我建议使用PDO或MYSQLi,因为MySQL_
已弃用。不仅如此,您还没有逃避自己的价值观并且让自己暴露于MySQL注入等问题
$pdo = new PDO("mysql:host=localhost;dbname=db","root","password");
$query = $pdo->prepare("INSERT INTO `metabase` (url, title, image, description) VALUES(:url, :title, :image, :descr)");
$query->bindValue(":url", "http://www.imgur.com", PDO::PARAM_STR);
$query->bindValue(":title", $title, PDO::PARAM_STR);
$query->bindValue(":image", $image, PDO::PARAM_STR);
$query->bindValue(":descr", $descr, PDO::PARAM_STR);
$query->execute();