Подскажите плз нубу, что значит выражение PHP: SET 'user_email'='{$user_email}'".$newpass." WHERE . С SET и WHERE все понятно, не ясно, что за конструкция PHP: 'user_email'='{$user_email}'".$newpass."
Ну вообще-то там скорее всего ошибка. SET `user_email`='{$user_email}'".$newpass." WHERE А вообще это значит следующее: {$user_email} - значение переменной подставляется в строку. Строка с двойными кавычками в пхп позволяет встраивать в неё значения переменных. Фигурные скобки во многих языках экранируют переменную, например, от следом идущего текста. Ну а $newpass - значение переменной поставляется в строку через конкатенацию. То есть сначала одна строка (в которую встроим юзер_имейл), потом значение этой переменной и потом далее другая строка.
Возможно ошибки нет, если там используется, что - то подобное:. PHP: $newpass = $password ? " `password`='{$password}'":''; Только зачем хз.
Спасибо за ответ! Правда, не все понял..Ошибка была - просто я код адаптирую для osclass, там свой движок для работы с базой, поэтому кавычки ` заменяю на ' по ходу дела, т.к. в итоге должно получиться что-то типа PHP: $aSkyCom = array('user_email' =>'$user_email'".$newpass.") //вот тут и застрял skyCom::newInstance() -> update($aSkyCom,array('user_id' =>$_SESSION['ses_user'])); А вот запрос: PHP: mysql_query("UPDATE 'skyusers' SET 'user_email'='{$user_email}'".$newpass." WHERE 'user_id'='{$_SESSION['ses_user']}'",$db) or die(mysql_error()); получается сначала обновляется значение ячейки user_email в базе, а затем значение ячейки, записанное в $newpass ?? Чтоб уж совсем для ясности: PHP: function update($values, $where) { $this->dao->from($this->getTableName()); $this->dao->set($values); $this->dao->where($where); return $this->dao->update(); }
Так ведь все запросы MySql описаны через функции движка, аналогично функции update. --- Добавлено --- Я, конечно, благодарен за советы, но вы не на том внимание заострили. Был запрос PHP: $skybase = mysql_query("UPDATE `skyusers` SET `user_email`='{$user_email}'".$newpass." WHERE `user_id`='{$_SESSION['ses_user']}'",$db) or die(mysql_error()); , мне его надо выполнить через движок скрипта osclass, т.е. привести к виду skyCom::newInstance()->update($aSkyCom,array('user_id'=>$_SESSION['ses_user'])). Функция update в движке описана через синтаксически правильные sql запросы. Мне просто нужно понять, что происходит тут: 'user_email'='{$user_email}'".$newpass." в контексте указанного sql запроса..
Ну ты давай не обижай нас тут. Не туда заострились. Зренки открой на своё первое сообщение. Что оно гласит? ЧО ЭТО спрашиваешь ты. Мы тебе отвечаем. Конкатенация, подстановка, ошибка в кавычках. А тебе оказывается путь в библиотеку надо было подсказать. Ну так ты сразу спрашивай по делу.
Да я и не думал обижать. Извини если что. Открыв зренки пошире, зацепил взором второе свое сообщение, в котором после благодарности за ответ, написал, что не все понял и спросил: получается сначала обновляется значение ячейки user_email в базе, а затем значение ячейки, записанное в $newpass ?? Мне в принципе понято, что такое конкатенация сама по себе, а вот в рамках этого кода, никак не доходит. Код (Text): $newpass = $user_pass; $code_pass = md5(md5($newpass) . $user_sol); $newpass=",`user_pass`='{$code_pass}',`user_sol`='{$user_sol}'"; $_SESSION['pass'] = $code_pass;
пропробуй не строку формировать а массив. судя по всему у тебя функция массив пар поле-значение принимать должна
PHP: //настройки if ($mod=='nas' || empty($mod)) { //общие if ($act == "rednas") { if (isset($_POST['user_pass']) && !empty($_POST['user_pass'])) {$user_pass = globper('user_pass'); function usersol($n=3) { $key = ''; $pattern = '1234567890abcdefghijklmnopqrstuvwxyz.,*_-=+'; $counter = strlen($pattern)-1; for($i=0; $i<$n; $i++) {$key .= $pattern{rand(0,$counter)}; } return $key; } $user_sol = usersol(); $newpass = $user_pass; $code_pass = md5(md5($newpass) . $user_sol); $newpass=",`user_pass`='{$code_pass}',`user_sol`='{$user_sol}'"; $_SESSION['pass'] = $code_pass; } else {$newpass=""; } $user_email = globper('user_email'); if (empty($user_email)){ al("обязательно введите адрес электронной почты"); } else { $skybase = mysql_query("UPDATE `skyusers` SET `user_email`='{$user_email}'".$newpass." WHERE `user_id`='{$_SESSION['ses_user']}'",$db)or die(mysql_error()); echo '<div class="ok">изменения внесены</div>'; } }
@IvanK где там sql который можно например выполнить через PHPMyAdmin? Ну и так вроде понятно, то ты не понимаешь что значит sql запрос? Чисты sql без php, который отправляешь в базу
Ребят, при всем уважении - вы не внесли ясности в мою нубскую голову.. Подскажите путь в библиотеку.. Где ни посмотрю, везде одна конструкция: SET `имя поля`='значение поля', а тут SET `user_email`='{$user_email}'".$newpass." Если это конкатенация, выходит в значении поля сидит строка типа "mail@mailPassword". Что такое sql запрос я понимаю, на сколько мой левел позволяет понимать. За идею спасибо - пропишу значения переменных выполню запрос и посмотрю что происходит, опять же, если я правильно понял идею
PHP: $sql = "UPDATE `skyusers` SET `user_email`='{$user_email}'".$newpass." WHERE `user_id`='{$_SESSION['ses_user']}'"; echo $sql;
Всем спасибо за ответы, советы. Я понял. Запрос mySQL UPDATE делается по схеме: UPDATE `table_name` SET `column1`=value, column2=value2,... WHERE `some_column`=some_value ..ну если не придираться к синтаксису. У меня есть запрос mysql_query("UPDATE 'skyusers' SET 'user_email'='{$user_email}'".$newpass." WHERE 'user_id'='{$_SESSION['ses_user']}'",$db) or die(mysql_error()); который начинается двойными кавычками " перед UPDATE, затем после указания имени поля для обновления '{$user_email}', в запрос сделана php вставка переменной $newpass простой функцией со сложным названием "конкатенация". Т.е. двойные кавычки после '{$user_email}' как бы закрывают временно sql запрос, затем вставляется $newpass (в которой прописаны еще 2 поля со значениями $newpass=",`user_pass`='{$code_pass}',`user_sol`='{$user_sol}'"; (писал в сообщении №12, не придал сначала должного значения значению переменной $newpass).. Затем двойной кавычкой запрос продолжается условием WHERE... Таким макаром конструкция...SET `user_email`='{$user_email}'".$newpass." WHERE... просто позволяет обновлять одновременно 3 поля, два из которых прописаны в переменной $newpass
Чувак, тут нету запроса. Запрос - это то, что получится, когда в строку будет подставлено всё, что туда должно быть подставлено. И запрос будет ошибочный, поскольку ты не те кавычки используешь. И какая-то DAO-библиотека, которую ты используешь, вообще не причём. Вообще, обычно, прежде чем делать запрос на DAO или ORM, и даже прежде чем его делать через php, надо его целиком представить или даже попробовать выполнить вручную, в виде чистого SQL, через phpmyadmin или даже прямо через консоль mysql
Мда нашёл что выбрать если уже так хочешь framework, чем тебе Laravel не устраивает ? Я в нём поработал пару недель, и знаешь у меня вообще ни каких претензий не было... Чётко классно, грамотно, всё шикарно работает, функционала зашибёшься. Ещё есть YII 2 сам в неё не работал, но людей много кто её использует, и тоже всем всё нравится. функция mysql_query(); Устарело и уже почти канула в вечность, а она там ещё используется, они издеваются, уже php 7.2 почти на дворе! --- Добавлено --- тут даже получается что моя самописаня, за месяц, библиотека, которую я ща пишу, куда совершеннее чем, что там что за хрень блин. --- Добавлено --- ещё и сайт кривой нафиг, даже ajax нету ни где там где он необходим просто, что блин, за ваще... Товарищ, остановись пока не поздно выкинь этот хлам. В топку спали его. Погоди ща через три месяца, я адекватно приведу свою библиотеку до ума раз тебе так уж хочется экстаза. Но совет возьми лучше за изучение Laravel - Это чудесная библиотека, то что я пишу в своей библиотеке, на прямую завязано, с функционалом, laravel, я смотрю что там и пытаюсь это реализовать, но блин то что ты используешь это смех и грех какой-то. Это один фиг что облиться бензином, и спичку поджигать стоять, и думать может мне повезёт. --- Добавлено --- Может он там и пытался что реализовать крутое за счёт, гео, но блин не об этом мне кажется надо думать, при реализации такого глобального понятия как framework. В первую очередь, framework это грамотно реализованная точка входа, хорошая структура и главное правильно реализованный стандарт написания, и первоначальный базовый функционал как запросы к бд, с их последующим экранирование, об этом думать, надо. Не думай, что я это просто так говорю, просто не с того путь надо начинать. ща кину тебе. ссылочку. на правильный путь. http://getjump.me/ru-php-the-right-way/ Вот читай, я его ещё даже если честно не закончил весь познавать .
Спасибо, мельком глянул - мне будет полезно, обязательно почитаю. Дело в том, что у меня стаж программирования чуть больше 3 месяцев, поэтому сравнивать мне особо не с чем. Была идея, знающий, но не имеющий свободного времени, человек посоветовал освоить и использовать word press, через него нашел скрипт доски объявлений osclass. Для решения задачи он подходил больше всего, т.к. с наименьшими трудозатратами можно было получить нужный результат. Библиотека dao, согласен, не очень удобная. Встроенный ajax контроллер там есть, я использовал. Laravel, на сколько я понял - широкопрофильная качественная платформа, а osclass - как я уже писал, подходила больше всего.
у меня 4 месяца в php и в общем плане, ну около года! Всё зависит от желания Даже меньше в php, 3 c кусочком