есть таблица mysql
Хочу Вывести из mysql название колонок где есть 1(т.е я про 20,30,40 и т.д. Их число и названия рандомны) при том только из определенной строки.
Не могу составить запрос, помогите пожалуйста.
Спустя 1 час, 12 минут, 47 секунд (12.05.2012 - 11:14) Kuliev написал(а):
DarkGuy
А можно по подробней, а то я что то не понял сути вопроса. Что нужно сделать конкретней!
А можно по подробней, а то я что то не понял сути вопроса. Что нужно сделать конкретней!
Спустя 2 минуты, 24 секунды (12.05.2012 - 11:16) dadli написал(а):
DarkGuy
а название поля, где ви искаете число "1" всегда будит числовоми?
а название поля, где ви искаете число "1" всегда будит числовоми?
Спустя 2 минуты, 9 секунд (12.05.2012 - 11:18) Kuliev написал(а):
DarkGuy
mysql_field_name — Возвращает название указанной колонки результата запроса
mysql_field_name — Возвращает название указанной колонки результата запроса
Спустя 2 минуты, 52 секунды (12.05.2012 - 11:21) DarkGuy написал(а):
Цитата (Kuliev @ 12.05.2012 - 07:14) |
DarkGuy А можно по подробней, а то я что то не понял сути вопроса. Что нужно сделать конкретней! |
Допустим $_GET['ID'] = 2 , то из строки где id = 2 , выбираются названия колонок где их содержимое равно 1(т.е. 10 и 20) и заносятся в массив к примеру.
а название поля, где ви искаете число "1" всегда будит числовоми?
угу
Спустя 4 минуты, 19 секунд (12.05.2012 - 11:25) DarkGuy написал(а):
Цитата (Kuliev @ 12.05.2012 - 07:18) |
DarkGuy mysql_field_name — Возвращает название указанной колонки результата запроса |
насколько я понял, несколько не то
Спустя 40 секунд (12.05.2012 - 11:26) DarkGuy написал(а):
Цитата (dadli @ 12.05.2012 - 07:16) |
DarkGuy а название поля, где ви искаете число "1" всегда будит числовоми? |
Да
Спустя 2 минуты, 44 секунды (12.05.2012 - 11:29) NitroGenerate написал(а):
SELECT name FROM 2950_stoune WHERE `10`=1 or `12`=1 or `14`=1 or `20`=1 or `30`=1 or `40`=1
Спустя 1 минута, 40 секунд (12.05.2012 - 11:30) DarkGuy написал(а):
Цитата (NitroGenerate @ 12.05.2012 - 07:29) |
SELECT name FROM 2950_stoune WHERE `10`=1 or `12`=1 or `14`=1 or `20`=1 or `30`=1 or `40`=1 |
проблема в том что количество колонок может изменяться, как и их названия.
Т.Е. Может добавиться колонка 140
Так что такой вариант не подходит.
Спустя 6 минут, 38 секунд (12.05.2012 - 11:37) NitroGenerate написал(а):
тогда в 2 этапа с использованием php
SHOW COLUMNS FROM 2950_stoune
Все числовые поля в массив.
Затем массив в SQL запрос который я написал выше
SHOW COLUMNS FROM 2950_stoune
Все числовые поля в массив.
Затем массив в SQL запрос который я написал выше
Спустя 4 минуты, 41 секунда (12.05.2012 - 11:42) DarkGuy написал(а):
Цитата (NitroGenerate @ 12.05.2012 - 07:37) |
тогда в 2 этапа с использованием php SHOW COLUMNS FROM 2950_stoune Все числовые поля в массив. Затем массив в SQL запрос который я написал выше |
блин.... сдохнуть можно.
Спасибо! Сейчас попробую
Спустя 3 минуты, 2 секунды (12.05.2012 - 11:45) rooor написал(а):
удалил))
Спустя 22 минуты, 13 секунд (12.05.2012 - 12:07) dadli написал(а):
$table_name = 'your_table';
$array = array();
$_GET['id'] = 2;
$res = mysqli_query($db,"
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = '$table_name'
") or die(mysqli_error($db));
while ($row = mysqli_fetch_row($res)) {
array_push($array ,$row[0]);
}
$sql = '';
foreach ($array as $val) {
$sql = $sql." "."SELECT '$val' AS name FROM $table_name WHERE $val = 1 AND id = ".$_GET['id']."
UNION ALL";
}
$sql = substr($sql,0,-strlen(' UNION ALL'));
$res = mysqli_query($db,"SELECT name FROM ($sql) AS t") or die(mysqli_error($db));
while ($row = mysqli_fetch_row($res)) {
echo $row[0].'<br>';
}
Спустя 16 минут, 47 секунд (12.05.2012 - 12:24) DarkGuy написал(а):
Цитата (dadli @ 12.05.2012 - 08:07) |
$table_name = 'your_table'; |
о спасибо!!!!!!!!!!!!
жалуется на
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = '$table_name'
") or die(mysqli_error($db));
Спустя 54 секунды (12.05.2012 - 12:25) DarkGuy написал(а):
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in /home/www/z213238/htdocs/users_stoune/lib/user_stoune.lib.php on line 66
Warning: mysqli_error() expects parameter 1 to be mysqli, null given in /home/www/z213238/htdocs/users_stoune/lib/user_stoune.lib.php on line 66
Warning: mysqli_error() expects parameter 1 to be mysqli, null given in /home/www/z213238/htdocs/users_stoune/lib/user_stoune.lib.php on line 66
Спустя 7 минут, 48 секунд (12.05.2012 - 12:32) DarkGuy написал(а):
а я уже стал делать так=)
$query5 = "SHOW COLUMNS FROM `".$dbpf."_stoune` ";
$sql5 = mysql_query($query5) or die(mysql_error());
while ($row5=mysql_fetch_array($sql5)) {
unset( $row5[id], $row5[ name], $row5[foto], $row5[faktura], $row5[brend]);
foreach($row5 as $key => $value) {
print "<pre>$key => $value\n </pre>";
}
}
Спустя 2 минуты, 52 секунды (12.05.2012 - 12:35) olgatcpip написал(а):
Цитата |
проблема в том что количество колонок может изменяться, как и их названия. |
SHOW FIELDS FROM $table
Попробуй этот запрос выполнить, должен дать названия полей. Эти поля возьмешь, удалишь из списка те, которые точно не подходят и можно сунуть оставшиеся в запрос через OR.
Спустя 57 минут, 6 секунд (12.05.2012 - 13:32) NitroGenerate написал(а):
Может быть так?
$query_col=mysql_query("SHOW COLUMNS FROM `".$dbpf."_stoune`");
$sel_arr=array();
while($res_col=mysql_fetch_array($query_col)) {
if ($res_col['Field']>0){
$sel_arr[]='`'.$res_col['Field'].'`=1';
}
}
$sel_arr = implode(" or ", $sel_arr);
$query_table=mysql_query("SELECT id, name, foto, faktura FROM `".$dbpf."_stoune` where ".$sel_arr);
while($res=mysql_fetch_array($query_table)) {
echo "<br />id=".$res['id'].", name=".$res['name'].", foto=".$res['foto'].", faktura=".$res['faktura'];
}
Спустя 8 минут, 21 секунда (12.05.2012 - 13:41) rooor написал(а):
NitroGenerate
Ему строки не нужны
Ему строки не нужны
Цитата |
Хочу Вывести из mysql название колонок где есть 1 |
Спустя 4 минуты, 36 секунд (12.05.2012 - 13:45) DarkGuy написал(а):
Чудесами
получил запрос
теперь туплю, как получить имена колонок.
$dbpf."_tolshina - содержит все нужные числа от 10 до 40
$spisok2 = array();
$spisok = array();
$query2 = "SELECT *
FROM `".$dbpf."_tolshina`";
$sql2 = mysql_query($query2) or die(mysql_error());
$spisok2[] = "`id`";
while ($row2=mysql_fetch_assoc($sql2))
{
$spisok2[] = "`".$row2['name']."`";
$spisok[] = "`".$row2['name']."` = '".addslashes('1')."'";
}
// print_r($spisok);
$spisok2 = count($spisok2) > 0 ? ' '.implode(' , ', $spisok2) : '';
$spisok = count($spisok) > 0 ? ' WHERE `id` = "'.addslashes($_GET['id_stoune']).'" AND '.implode(' or ', $spisok) : '';
// print_r($spisok);
$query3 = "SELECT ".$spisok2." FROM `".$dbpf."_stoune` ".$spisok."";
print_r($query3);
получил запрос
SELECT `id` , `30` , `20` , `10` , `12` , `14` , `40`
FROM `2950_stoune`
WHERE `id` = "3"
AND `30` = '1'
or `20` = '1'
or `10` = '1'
or `12` = '1'
or `14` = '1'
or `40` = '1'
теперь туплю, как получить имена колонок.
$dbpf."_tolshina - содержит все нужные числа от 10 до 40