2015-08-31 3 views
-1

Edit: Читать ответы ниже, прежде чем читать мое неправильное знание SQL лол

Так что я пытаюсь вставить переменную и по какой-то причине он думает, что это столбец, хотя я имею его в одинарных кавычках. Что я делаю не так? Спасибо за ваше время.

Unknown column '$emailAddress' in 'field list'] in EXECUTE("UPDATE mailer_recipients SET email_address=$emailAddress WHERE id=539") 

$sql = 'UPDATE ' . $this->recipientDbTable . ' SET ' . $this->recipientDbColumn['result_id'] . '=' . '$hash' . ' WHERE ' . $this->recipientDbColumn['id'] . '=' . $this->emailId; 

    $sql = 'UPDATE ' . $this->recipientDbTable . ' SET ' . $this->recipientDbColumn['address'] . '=' . '$emailAddress' . ' WHERE ' . $this->recipientDbColumn['id'] . '=' . $this->emailId; 
+0

Вам нужно понять разницу между одинарной кавычкой и двойной цитатой. Короче говоря, одиночные кавычки будут отображаться почти полностью «как есть». Строки с двумя кавычками будут отображать множество экранированных символов (включая некоторые регулярные выражения), а переменные в строках будет оценено. Важным моментом здесь является то, что вы можете использовать фигурные скобки, чтобы изолировать имя переменной, которую вы хотите оценить. Проверьте это http://stackoverflow.com/questions/3446216/what-is-the-difference-between -single-quoted-and-double-quoted-strings-in-php –

+0

Спасибо, что вы сейчас читаете. – Spidey

ответ

2

Попробуйте это:

$sql = "UPDATE {$this->recipientDbTable} SET {$this->recipientDbColumn['result_id']} = '{$hash}' WHERE {$this->recipientDbColumn['id']} = {$this->emailId}"; 

ли прочитанное на разнице между одинарными и двойными кавычками.

+1

Чтобы уточнить ваш ответ, двойные кавычки заменяют переменные inline. Одиночные кавычки не – MarshallOfSound

+0

Совершенно верно ... извините, спешите . :) –

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