无法在MySQL数据库中插入数据

时间:2015-04-09 14:12:37

标签: php mysql

这是我的代码

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.

所以这是因为'我如何纠正它?

2 个答案:

答案 0 :(得分:2)

在将数据插入数据库之前,需要转义数据。描述中的杂散撇号会导致问题:

$descr = mysql_real_escape_string($descr);

stop using mysql_* functions。它们不再被维护,而是officially deprecated

答案 1 :(得分:1)

我建议使用PDOMYSQLi,因为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();