Я знайшов проблему, і тепер мій вставний запит працює, але я не розумію чому.
$add_movie = mysql_query("INSERT INTO ownedmovies VALUES ("", "{$movie_data["Title"]}",
"{$movie_data["Year"]}", "{$movie_data["Rated"]}", "{$movie_data["Runtime"]}",
"{$movie_data["Genre"]}", "{$movie_data["Director"]}", "{$movie_data["Writer"]}",
"{$movie_data["Actors"]}", "{$movie_data["Plot"]}", "{$movie_data["imdbRating"]}")");
Зверніть увагу, що я використовував подвійні лапки навколо сюжетуполе і нормальне навколо всього іншого. Коли я зробив поле ділянки так само, як інші, це не було б помилкою, але нічого б не вставити в таблицю ... тепер вона працює відмінно.
Чи може хтось просвітити мене, чому це так?
Дякую
Відповіді:
5 за відповідь № 1Я підозрюю, що ваші сюжетні сюжети містять одну цитату. Щоб уникнути цієї проблеми, вам слід скористатися значеннями рядкових значень mysql_real_escape_string
або (краще) використовувати параметризовані запити.
Ваше "рішення" про зміну однієї цитати в подвійну цитату може з'явитися в цьому випадку, але воно не вдасться, якщо рядок ділянки містить подвійні цитати.
1 для відповіді № 2
У PHP подвійні лапки розібратимуть змінні в його стороні, одинарні лапки всередині них будуть просто одинарні лапки в рядку.
Для передачі параметрів varchar в mysql, вони повинні бути укладені в лапки, так що окремі лапки передаються в mysql як параметри varchar.
Ваші змінні php аналізуються всередині подвійних лапок, а рядок sql буде містити значення, які ви передаєте в змінні.
1 для відповіді № 3
Будьте обережні при використанні подвійних лапок у запитах MySQL - вони мають різні значення в залежності від режиму SQL, в якому працює MySQL.
select "fred" from table
Поверне значення зі стовпця fred, якщо в режимі ANSI_QUOTE інакше він поверне значення літералу fred.
0 для відповіді № 4
Подвійні та одиночні лапки використовуються разом для того, щоб програма не заплуталася, де запит закінчився.
наприклад запит
("Select "name" From "contacts"")
Якщо ви використовували всі подвійні лапки, то це виглядало б так
("Select "name" From "contacts"")
І програма могла б дозволити собі думати, що фактичний запит - "Вибрати"
Ось так я думаю.