PHP 5 для начинающих |
Страница 419 из 813 -> 'Pads', -> Password(12345), -> 'Brian Reid', -> 'Winger', -> 'Stickypads@doggies_rugby.com', -> 'Высококлассный перехватчик мячей.'); Той же цели можно достичь с помощью PHP:fresult = mysql_query("INSERT INTO user VALUES( ... )"); Обычно для вставки значений в таблицу вместо непосредственного указания значений в запросе используются PHP-переменные: fquery = "INSERT INTO user VALUES(NULL, '$userid', password('$userpassword'), '$username', '$userposition', '$useremail', '$userprofile')"; $result = mysql_query($query); Напомним, что поле usernumber имеет тип AUTO_INCREMENT ------ запрос передает в это поле NULL, чтобы его значение в каждой новой добавляемой записи было на единицу больше, чем у предыдущей записи. Иногда возможность получать результирующее значение бывает очень удобной; например, можно сделать так, чтобы сценарий при регистрации нового пользователя показывал ему его регистрационный номер. Автоматически увеличенное число, сгенерированное последним INSERT-запросом, можно получить с помощью функции mysql_insert_id(). Например: flink_id = db_connect('sample_db'); $result = mysql_query("INSERT INTO user (userid) VALUES('sphinx')"); $usernumber = mysql_insert_id($link_id); echo "Спасибо. Ваш номер - $usernumber."; Как уже отмечалось в главе 9, прежде чем вставлять строковое значение в таблицу базы данных, необходимо экранировать каждую одинарную кавычку в этом значении, в противном случае возникает ошибка. В предыдущей главе приводился пример с вставкой строки "I'm a rugby player'' в поле userprofile типа TEXT. Ввиду того, что эта строка ограничена двойными кавычками, она хорошо вставляется в базу данных как с помощью клиентской программы mysql, так и с помощью PHP. Чтобы заключить эту строку в одинарные кавычки, понадобилось бы экранировать одинарную кавычку, содержащуюся в строке. Рассмотрим несколько примеров:"I'm a PHP developer." Работает. 'I\m a PHP developer.' Тоже работает. 'I'm a PHP developer.' Не работает. Однако почему приходится учитывать эти различия? Несомненно, лучше всего экранировать все вхождения кавычек, как двойных, так и одинарных ------ в конце концов, в PHP экранированные кавычки работают как в строковых значениях, ограниченных одинарными кавычками, так и в строковых значениях, ограниченных двойными кавычками. Все зависит от программы. Если поставить обратную косую черту перед одинарной кавычкой в первом примере, то получится следующая строка: "I\'m a PHP developer". |