Какая разнича кто мешает? 4тая ветка мускула мешает, я задал вопрос с опрелённым условием, зачем его перекручивать да ещe и спорить?
А сделать одним запросом select *, потом из fetch-массива вытащить все названия столбцов тоже 4-я ветка мешает? Никак ты не сделаешь concat(*) без названия столбцов.
В PHP есть такая функция называется mysql_fetch_field она возвращает информацию о колонке из результата запроса в виде объекта, таким способом ты сможешь узнать названия колонки и делать с ней всё что хочешь примеров уйма.
мне нужно без вмешательства в php только mysql я уже писал ну а кроме concat() нету ничего другого чтобы могло помоч?
Можно и с concat(), если знать количество колонок в таблице. Пример, в таблице `t1` три колонки, тогда конкатенацию всех колонок, не зная их имени можно сделать так: Code: select concat_ws(0x3a,c1,c2,c3) from (select 1 c1,2 c2, 3 c3 union select * from t1)k
мм, интересный вриант PHP: <? include("../dbconnect.php"); $sql = mysql_fetch_assoc(mysql_query("select concat_ws(0x3a,c1,c2,c3,c4) from (select 1 c1, 2 c2, 3 c3, 4 c4 union select * from `news` where `id` = '6')k")); print_r($sql); ?> ответ PHP: Array ( [concat_ws(0x3a,c1,c2,c3,c4)] => 1:2:3:0000-00-00 ) данных из таблице нет, почему? я непавильно что-то сделал?
Да, не захотел разобраться, что делает запрос, не захотел даже посмотреть - какие данные он возвращает. Ты не новичек и не двоечник, чтобы применять тактику скрипт-кидди. Запрос простой, чтобы разобраться - достаточно базовых знаний SQL-запросов. Совсем не трудно было посмотреть результаты в mysql -uroot -p или запустить PhpMyAdmin. Твой скрипт возвращает только первую запись результата запроса (rtfm mysql_fetch_assoc()), которая есть мусор, нужные данные в строке ниже. Используй limit или group_concat(), чтобы увидеть конкретную строку или все данные. PHP: include("../dbconnect.php"); $sql = "select concat_ws(0x3a,c1,c2,c3,c4) from (select 1 c1, 2 c2, 3 c3, 4 c4 union select * from `news` limit 1,30)k"; $r = mysql_query($sql); while ($row = mysql_fetch_assoc($r)) print_r($row); }
[ПРОБЛЕМА С КОДИРОВКОЙ] Пытался вывести таблицу из mysql (в денвере 3) На экран выводится это: �����. Я уже и незнаю что делать. Но скорее всего проблема в кодировке которая выставлена в phpmyadmin. Потому как остальной текст выводится нормально, а вот из базы данных - такая хрень. Поставил версию 3.5.7 - не помогает. А выводил я так: <?php /* mysql */ $dat = mysql_connect ("localhost", "AD_min", "12345"); mysql_select_db ("firstbd",$dat); $result = mysql_query ("SELECT * FROM zalypa",$dat); $myrow = mysql_fetch_array($result); do { echo "Сотрудник № - ".$myrow ['id']."<br>"; echo $myrow ['name']."<br>"; echo $myrow ['last_name']."<br>"; printf ("Сотрудник № - %s<br>%s<br>%s<br>%s", $myrow ['id'], $myrow ['name'], $myrow ['last_name'], $myrow ['dol']); } while ($myrow = mysql_fetch_array($result)); ?> PS: Кодировка: php файла:utf-8, B phpmyadmin на самой главной странице (основные настройки) -utf-8 general-ci. Кодировка таблицы (написано сравнение)- utf-8 general-ci. А вот самих строчек в таблице - cp1251_general_ci. На вкладке "операции" - тоже cp1251_general_ci. PS: Я уже пробовал вместо $dat обычный $db ставить. Не помогает. Что чделать чтобы было нормально? Заранее спасибо!
В самы верх скрипта поставь Code: header('Content-Type: text/html; charset=utf-8') и проверь, если не пойдёт смени кодировку в хейдере на 1251. И ещё вот в код сайта, после функций mysql_connect и mysql_select_db добавляем строчку mysql_query("SET NAMES utf8");
При регистрации пользователя есть проверка на существование такого же email уже в базе т.е. два sql запроса, 1. проверка, 2. добавление нового пользователя надо ли два этих действия объединить в одну транзакцию или и так пойдет? правильно я понимаю что теоретически если отправить 2 запроса на регистрацию одновременно, можно зарегистрировать 2 аккаунта с одинаковыми email?
Kruzak Да, это легко реализуемо при неправильно созданной базе. Однако вопрос - действительно ли это риск для вашего приложения? Легкий фикс - добавить на поле в БД аттрибут UNIQUE и избавиться от первого запроса проверки. Достаточно просто инсертить и проверять mysql_affected_rows
Gifts, Спасибо, забыл про UNIQUE) еще вопрос, есть таблица - там записи ID | DATE | VALUE date в формате unix time подскажите можно ли средствами mysql сделать выборку и вывести массив с суммой значений VALUE распределенный по неделям на выходе мне нужен такой массив: 1 неделя этого года = 1200 2 = 2740 3 = 2500 4 = 3200 и т.д.
сейчас пишу движок для онлайн игры никак не могу решить как хранить деньги в бд, какой тип выбрать посоветуйте decimal 11,2 или int 11 в decimal хранить как 55.2 или в int хранить как 55200 (55.2 * 100), при выводе уже соответственно делить на 100 почему мешкаюсь, потому что будет много операций с деньгами - комиссии, округления, бонусы процентные, подарки и т.п. почему то боюсь что с decimal возникнут проблемы когда нужно будет операции производить процентные - округления и т.п.
Могу сказать по опыту в таких случаях я всегда использую int при всех действия что ты указал проблем не возникало.