Господа. Ну ... звэняйте. На PHP пробую писать уже вторую неделю. Еще пока сильно туплю. Предпринял попытку изучаю PHP - исключительно для себя. Посмотрите код, кому не влом. В данном конкретном случае стоит задача сформировать строку запроса (SELECT) к SQL серверу. Эти два класса вырваны из контекста моей задумки сделать некий майфрейм для работы с базой данных. Просьба к ГУРУ подсказать много ли здесь наворочено лишнего? Во сам код: Код (Text): class sql_base{ /** * @param type $val Значение, которое будет подставляться к WHERE * @return $val Водвращает пришедшее значение, <p> * только в зависимости от типа одевает его в кавычки */ function setoftype($val){ switch (gettype($val)) { case 'integer': return $val; case 'boolean' : return ($val)? '1': '0'; default : return "'".$val."'"; } } function get_conditions($Sql, $Params){ $Keys = array(); $Values = array(); foreach($Params as $key => $val) { $Keys[] = '{'.$key.'}'; $Values[] = $this->setoftype($val); } return str_replace($Keys, $Values, $Sql); } function getfields($Params, $srtQuery){ $Result = ''; foreach ($Params as $i => $value) { $Result .= $value . ((Count($Params) > $i+1 )? ', ' : ''); } return str_replace('{fields}', $Result, $srtQuery); } } class sql_select extends sql_base { // Шаблон private $srtQuery = 'SELECT {fields} FROM {table} WHERE {conditions}'; public function __construct($fields, $table, $conditions, $params) { $this->define_fields($fields); $this->define_table($table); $this->define_conditions($conditions, $params); } function define_fields($fields) { $this->srtQuery = $this->getfields($fields, $this->srtQuery); return $this; } function define_table($table) { $this->srtQuery = str_replace('{table}', $table, $this->srtQuery); return $this; } function define_conditions($conditions, $params) { $this->srtQuery = $this->get_conditions(str_replace('{conditions}', $conditions, $this->srtQuery), $params); return $this; } function getQuery(){ return $this->srtQuery; } } // Значения этих переменных будет формироваться в классе моделей таблиц и // и в других точках реализации кода программы // Здесь значения приведены для примера (разработки) $fields = array('id', 'name', 'mail', 'IsBanned'); $Mail = 'goldenfill@mail.ru'; $params = array('Id' => (int)1, 'Mail' => $Mail, 'IsBanned' => false); $conditions = "Id = {Id} and Mail = {Mail} and IsBanned = {IsBanned}"; // (new sql_select($fields, 'RFUsers', $conditions, $params))->getQuery() // Эта конструкция непосредственно формирует строку SQL запроса print (new sql_select($fields, 'RFUsers', $conditions, $params))->getQuery();
Ну, что-то подобное - да. sql-injection - это что? Дело в том, что я никогда не занимался PHP вообще. Писал в делфях, бейсике, C#, но это было ОООчень давно. Дело в том, что в данной реализации я только формирую строку запроса, что бы как-то ее можно было потом универсально использовать, включая и сложные (вложенные) запросы.
В создании программ, нельзя доверять данным которые приходят от пользователей, получается защитное программирование, надо либо данные проверять или экранировать. Ещё нужно незнакомые слова искать самостоятельно в поиске, например yandex, google. Только после этого спрашивать, что не понятно, потому что это быстрее чем ждать ответа.Вот по безопасности для начала http://phpfaq.ru/tech/safety По каким книгам изучаешь PHP, MySQL? Хочешь научиться? Если нет, то можно взять готовые библиотеки.
Это понятно. Спасибо за ссылку Да ни по каким. Гуглю информацию Да мне интересно самому это реализовать. От безделия решил выучить язык (пенсионер). Хотя все языки в сущности одинаковы. Разница только в некоторых особенностях синтаксиса и в некоторых фишках.
Про поиск это отлично, но лучше читать книгу там как инструкция к телевизору, от начала до конца по возможности. Читай книги свежие (2016/2017 год), по HTML, CSS, JavaScript, PHP, MySQL. Всё это в отдельных книгах есть, там по подробнее. Вот по PHP http://www.ozon.ru/context/detail/id/137538198/ более менее книга. Это посмотри https://en.wikipedia.org/wiki/PHP_Standard_Recommendation Ещё может понадобиться знания по администрированию Linux, почитай что такое VirtualBox например, образ turnkeylinux. Посмотри функциональные, например Erlang, так для развития кругозора. Посмотри что такое Query Builder, ActiveRecord, ORM это может помочь
в документации по пхп очень много внизу каментов, которые отсортированы по заплюсованности. там разобраны почти все ситуации, связанные с темой страницы. Например http://php.net/manual/en/function.parse-str.php