2013-11-01 1 views
1

Извините, что возвращаюсь два дня подряд. Вчера я провел целый день, читая на этом сайте и других, и я просто застрял. Единственное, что я нашел, было для C++. Я создаю базу данных для своих DVD и фильмов, чтобы я и мои друзья могли искать по названию, актерам и т. Д. С помощью вчерашнего дня мне удалось получить форму ввода данных. Одним из полей является гиперссылка на IMDB для получения информации о фильме. Я хочу просто вставить URL-адрес в форму, но сохранить его как полную гиперссылку в MySQL. Когда он появляется на страницах результатов, он просто появляется как ссылка, на которую я могу щелкнуть и перейти на страницу IMDB.Невозможно преобразовать URL-адрес в гиперссылку для хранения в MySQL

Это то, к чему я пришел. Я получаю синтаксическую ошибку, если я включаю «target =« _ blank »>, но если я принимаю это, синтаксическая ошибка отсутствует, но я получаю« Ошибка X »без кода ошибки и без записи в базу данных. может получить эту работу? Спасибо заранее.

// Make link info into hyperlink for database 

     $url = ('$_POST[link]'); 
    $f_link = "<a href= " . $url . "target="_blank">IMDB Movie Page</a>"; 

    // Write data to table.  

    $sql="INSERT INTO movies (Movies, Rating, Genre, Year, Actors, Time, Notes, Viewed, BitRate, link) 
     VALUES  ('$_POST[Movies]','$_POST[Rating]','$_POST[Genre]','$_POST[Year]','$_POST[Actors]','$_POST[ Time]','$_POST[Notes]','$_POST[Viewed]','$_POST[BitRate]', $f_link)"; 

    if (!mysqli_query($con,$sql)) 
    { 
    die('Error: X ' . mysql_error($con)); 
    } 
+1

Побег ваших цитат! –

ответ

0

К вашему вопросу о котировках: рассмотреть следующий SQL:

$sql = "SELECT * from table1 where id = god"; 

MySQL интерпретируют получил как некоторые вещи еще, чем строка ('бог' отличается от полученного).

поэтому вы должны ввести

$sql = "SELECT * from table1 where id = 'god'"; 

или

$value = 'god'; 
$sql = "SELECT * from table1 where id = '{$value}'"; 

или

$value = 'god'; 
$sql = "SELECT * from table1 where id = '" . $value . "'"; 

Примечание: в случае, если значение является числовым (flaot, целое число, ...), то вы не делаете цитату

$value = 12334; 
$sql = "SELECT * from table1 where id = {$god}"; 
+1

Спасибо, что нашли время, чтобы объяснить это мне. это поможет. Я вернусь сюда и перечитаю g это, пока я не зафиксирую его в памяти. Я ценю помощь. –

0

вы должны экранировать кавычки, когда вы хотите, чтобы включить их в строку в кавычках.

$f_link = "<a href= " . $url . " target=\"_blank\">IMDB Movie Page</a>"; 

но вы также должны иметь котировку по URL

$f_link = "<a href=\"" . $url . "\" target=\"_blank\">IMDB Movie Page</a>"; 

Используя одиночные кавычки заключить облегчает,

$f_link = '<a href="' . $url . '" target="_blank">IMDB Movie Page</a>'; 

, но имейте в виду, PHP не анализирует содержимое в данном случае, что не является проблемой в этой линии, потому что вы каскадный $ URL, который является более чистым способом.

Также обратите внимание, что вы оставляете себя открытым для SQL-инъекции, чтобы эти $ _POSTs были непосредственно вставлены в команду SQL.

+0

Спасибо, popnoodles. Я вижу, что ты что-то редактировал после того, как я попробовал. К сожалению, когда я попробовал, там были синтаксические ошибки, которые я не мог найти и исправить. К счастью для меня, следующий комментарий работал после того, как я нашел одну простую ошибку. Как я уже говорил выше, мне нужно узнать об этой SQL-инъекции. Спасибо за помощь. –

0

Я рекомендую вам хранить в базе данных $url без HTML. Если позже вы захотите изменить свою ссылку, вам придется решить, как обновлять все ваши записи ... Если вы переключите свой код, чтобы просто сохранить URL-адрес, не добавляя HTML вокруг него, он исправит ошибку (которая не указана в кавычках) ,

Когда вы извлекаете URL-адрес из базы данных, вы можете обернуть его своим HTML-кодом и избежать этой боли.

Вы отлично себя чувствуете, когда начинаете всего пару дней с этого - но вам может потребоваться подумать о SQL-инъекции, даже если вы не думаете, что кто-то намеренно атакует вашу страницу, вы можете случайно вызвать проблемы, если вы не параметризуете свой SQL - например, если кто-то случайно вводит ' в форму.

+0

Спасибо, Стив. Мне очень жаль, что я не делаю так хорошо, как вы думаете. Многое из того, что вы сказали, ушло прямо над моей головой. Я немного читал о SQL Injection, что стало для меня новым термином. К счастью, в базе данных нет ничего, что вы не можете найти в Интернете, поэтому атака для загрузки информации никому ничего не даст. Я буду продолжать читать и учиться, и я ценю помощь. –

+0

Нет проблем ... худшим сценарием будет кто-то, входящий ... ''); DROP TABLE Movies; 'в ввод ссылки - это потеряет все ваши данные! – Fenton

+1

Стив, я не просто мокрый за ушами, у меня там океан. Я никогда не думал о том, что кто-то возится со мной. У меня был пароль, включенный в PHP-страницу, потому что я знал, что никто не мог этого увидеть. Но потом мне показалось, что если бы кто-нибудь нашел HTML-страницу для формы, они могли бы по крайней мере поместить все, что захотят, в стол и, может быть, еще хуже. Поэтому я добавил поле пароля в форму, и теперь мне нужно вводить его каждый раз, когда я объявляю запись. Возможно, это не лучший, а шаг в правильном направлении. Благодарю. –

0

Заменить код через:

$url = ($_POST['link']); 
$f_link = "<a href= \" {$url}\" target=\"_blank\">IMDB Movie Page</a>"; 

// Write data to table.  

$sql="INSERT INTO movies (Movies, Rating, Genre, Year, Actors, Time, Notes, Viewed, BitRate, link) 
    VALUES 
    ('" . $_POST['Movies'] ."', '" . $_POST['Rating'] . "', '" . $_POST['Genre'] . "', '" . $_POST['Year']" . ', '" . $_POST['Actors'] ."', '" . $_POST['Time'] . "', '" . $_POST['Notes'] . "','" . $_POST['Viewed'] . "','" . $_POST['BitRate'] . "', '{$f_link}')"; 

if (!mysqli_query($con,$sql)) 
{ 
    die('Error: X ' . mysql_error($con)); 
} 
+1

Ульрих, ты был спасателем жизни. Сначала это не сработало, но после «Года» это была простая проблема, и я уверен, что она просто быстро набирала текст. Если я могу спросить, все. "', чтобы сделать с SQL Injection? Если нет, то где-то я могу прочитать, почему это сработало, когда мой код не сделал этого? Еще раз спасибо за помощь. –

+0

Основываясь на вашем наблюдении и еще кто-то, я узнал, как сэкономить моя база данных с моего сервера на мой компьютер для резервного копирования, на всякий случай. Я искал помощь (vs {vs [но я ничего не нашел. Также для «vs» и снова ничего. Но я посмотрю, пока не найду где-нибудь что даст мне понять, что использовать. Спасибо. –

+0

Какой клиентский интерфейс вы используете для доступа к своей базе данных? Если вы используете phpmyadmin или MySQL Workbench, у них есть опция меню, которая позволяет экспортировать всю вашу базу данных. –

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