2015-04-09 4 views
-6

Вот мой кодНе удается вставить данные в базу данных 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) и текст описания. Это ошибка

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

Каковы типы полей в базе данных и есть ли отчеты об ошибках? –

+1

Изменить 'die()' to 'die (mysql_error())' – TiiJ7

+0

или умереть (mysql_error()); не отображается никаких ошибок? – daremachine

ответ

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(); 
+0

Привет, Джейк, я получил «неожиданный»: «ошибка» в строке 37, которая является '$ pdo-> bindValue (: url," http://www.imgur.com/ ", PDO :: PARAM_STR);' –

+0

Извините! Я расстался, когда писал это, я обновил его, чтобы исправить проблему. – Jake

+0

В каком пространстве вы ссылаетесь? –

2

Вы должны избежать данных, прежде чем вставить его в базу данных. Бездомный апостроф в описании вызывает Вас проблемы:

$descr = mysql_real_escape_string($descr); 

Пожалуйста, stop using mysql_* functions. Они больше не поддерживаются и являются officially deprecated.

Смежные вопросы