Не вставляются данные в MySQL
Сорри, если нечто простое.
Есть такое: Код:
<?php Код:
class User Код:
<?php В таблице не только два поля id и имя. Там масса полей. Но при создании нового пользователя нужно все остальные по дефолту. Есть два предположения -неверно составлен запрос (я в них почти ни бум бум). Или другое. Там есть три поля - блобы. У которых не дает установить дефолтные значения. Может оттого, что у них нет дефолтных значений строка в таблицу не вставляется. Подскажите, плиз, - что делаю неверно. Спасибо. |
Ответ: Не вставляются данные в MySQL
Используй error - функцию, чтобы проверить что MySQL возвращает после запроса.
http://www.php.net/manual/en/mysqli.error.php |
Ответ: Не вставляются данные в MySQL
Спасибо,помогло.
Оказалось нужно вот так: Код:
$query = "INSERT INTO `user` (`id` , `name`) VALUES ($id, `\"$name\"`)"; Это нормально? Если нужно записать строку в поле таблицы из переменной,- нужно так ее оформлять? Или можно как-то проще? |
Ответ: Не вставляются данные в MySQL
Всё верно. И куда проще?
|
Ответ: Не вставляются данные в MySQL
Только еще бы сделать защиту от SQL инъекций
|
Ответ: Не вставляются данные в MySQL
Цитата:
PHP код:
|
Ответ: Не вставляются данные в MySQL
Цитата:
Но в плане гибкости имхо так лучше. |
Ответ: Не вставляются данные в MySQL
Цитата:
|
Ответ: Не вставляются данные в MySQL
Ну защиту от инъекций я сделал stripslashes и escape_string. Надеюсь этого достаточно. По prepare прочитал статейку, что она не очень хороша, увидел что писанины больше и решил не использовать. Сейчас смотрю - вроде действительно удобнее. Почитаю еще, может и перейду на такой способ.
Спасибо. |
Ответ: Не вставляются данные в MySQL
Цитата:
Например код: PHP код:
Код:
?id=1; DROP TABLE users Код:
SELECT * FROM users WHERE id =1; DROP TABLE users; Это на вскидку |
Ответ: Не вставляются данные в MySQL
Ага. А в случае с prepare переданное id уже будет не double, и следовательно bind_param вернет false. Но тогда ведь нужно проверять перед execute что вернул bind_param. Верно? Или можно не проверять? execute тоже просто вернет false, если что-то не так. А запрос просто не выполнится.
|
Ответ: Не вставляются данные в MySQL
Цитата:
Например рассмотрим переданную строку "123test" i - 123 d - 123.0 s - "123test" (с кавычками и отсечением лишних символов будет сразу) Проверять ли на true или false - на усмотрение программиста. Главное что прилетят только нужные данные и нужных типов. |
Часовой пояс GMT +4, время: 02:58. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot