Проверка на существование имени столбца в таблице

amorfis

я стараюсь
Проверка на существование имени столбца в таблице

Возникла ситуация, когда необходимо проверить есть в таблице БД столбец с определенным именем.

Реализовал так:

PHP:
$cResult = mysql_query("SHOW FIELDS FROM `Message`;");
$setFields = array();
while ($row = mysql_fetch_row($cResult))
            array_push($setFields, $row[0]);
if (!in_array("IsSendObject", $setFields))
{
  echo "hello";
}
Может есть более изящный способ?
 

white phoenix

Новичок
По SQL-запросу думаю нет. Если нужно одно проверить то:
PHP:
$cResult = mysql_query('SHOW FIELDS FROM `Message`');
$found = FALSE;
while ($row = mysql_fetch_row($cResult)) {if ($row[0] == 'IsSendObject') {$found = TRUE; break;}}
if (!$found) {echo 'hello';}
 

SunDrop

Помощник поисков. робота
ТО что сходу пришло в голову:
PHP:
$result = mysql_query('SELECT FIELD_NAME from `TABLE_NAME` LIMIT 1', $o_con);
if (!$result)
{
	echo mysql_error($o_con); // Unknown column 'FIELD_NAME' in 'field list'
	echo mysql_errno($o_con); // 1054 вот по этому идентефикатору ошибки и можешь определять, что столбца нет
}
 

white phoenix

Новичок
SunDrop
Подумал об этом, но показалось что это изврат. Особенно если использовать какой-нибудь отладочный инструмент...
 

SunDrop

Помощник поисков. робота
Подробнее распишу:
PHP:
$result = mysql_query('SELECT id_ from `cart` LIMIT 1', $o_con);
if (!$result)
{
	if (1054 == mysql_errno($o_con))
	{
		echo 'Hello';
	}
}
 

amorfis

я стараюсь
Спасибо за ответы. Просто думал, может с помощью SQL это можно как-то вычислить.
 

Andreika

"PHP for nubies" reader
white phoenix
нигде.. это мы с моим мускулом придумали напару.. точнее я придумал, а он выполнил

amorfis
прежде чем меня лицом в мануал тыкать САМ бы туда зашел посмотрел и решил свою задачу за 20 секунд
 

white phoenix

Новичок
Andreika
> а он выполнил
Правда?
>to amorfis> прежде чем меня лицом в мануал тыкать САМ бы туда зашел посмотрел и решил свою задачу за 20 секунд
Может не надо хамить?
 

amorfis

я стараюсь
Andreika
Да у меня с SQL не особо. Просто я там увидел, что WHERE нельзя. А про LIKE я и не знал. )) Точнее не думал что так получится.
 

Andreika

"PHP for nubies" reader
amorfis
где ты там увидел, что WHERE нельзя??? там так специально и написано - нельзяWHERE?

white phoenix
а ты не сомневайся

WHERE field='a' => fetch_assoc

Array ( [Field] => a [Type] => int(11) [Null] => NO [Key] => [Default] => 2 [Extra] => )

без WHERE

Array ( [Field] => id [Type] => int(10) unsigned [Null] => NO [Key] => PRI [Default] => [Extra] => auto_increment )

// MySQL 5.0.18

это не хамство.. это я просто не понимаю.. про where он где-то нашел, а ответ на свой вопрос - ну никак
 

amorfis

я стараюсь
Andreika

Смотри ман внимательно среди структур возможных при использовании с show где-нить увидел WHERE???

И еще, 5 мускул еще мало где есть.
 

Andreika

"PHP for nubies" reader
amorfis
да я как бы и не спорю, что LIKE оно полезнее... просто не понимаю - человек знает где мануал, знает параметры запроса (использует его в своих примерах), знает что там нет WHERE, но тратит свое и чужое время потому, что "не думал что так получится"

white phoenix
однозначно LIKE кошернее.. я мануал не разглядывал, написал по памяти, в phpMyAdminе была открыта 5ка... проверил - работает... :)
 
Сверху