/ / У чому різниця між подвійними лапками і одинарними лапками в запиті mysql - php, mysql

Яка різниця між подвійними лапками та окремими лапками в запиті mysql - php, mysql

Я знайшов проблему, і тепер мій вставний запит працює, але я не розумію чому.

$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"")

І програма могла б дозволити собі думати, що фактичний запит - "Вибрати"

Ось так я думаю.