2010-01-17 2 views
0

Не могу понять это для жизни меня. Попытка вернуть имена столбцов из таблицы ценных бумаг клиентов, а затем вернуть результат в виде массива. Может ли кто-нибудь указать, откуда я сошел?Возвращение имен столбцов из таблицы mySQL с использованием PHP

mysql_select_db("HandlerProject", $con);  //Selects database 
    $selectcols = "SELECT * FROM ".$clientname."securitiestable";  //selects all  columns from clients security table 
    $tempcols = mysql_query($selectcols) or die(mysql_error()); 
    $returnedcols = $mysql_fetch_array($tempcols); 
    $tempsymbol = mysql_query("SHOW COLUMNS FROM".$clientname."securitiestable"); 
    $symbol = $mysql_fetch_array($tempsymbol); 
+0

Последние две строки должны работать нормально. В чем проблема? –

+0

Выдает «Неустранимая ошибка: имя функции должно быть строкой» для строк $ refcols и $ symbol – JoeCortopassi

ответ

5

Предложения:

Вы получили $ признаки Приставка mysql_fetch_array() звонки, так что вы должны были бы быть присвоено значение (имя функции вы хотите позвонить) в $mysql_fetch_array (это, вероятно, почему вы видите ошибку, о которой упоминаете в своем комментарии).

Также вы недостающий пробел после FROM во втором запросе

//           v 
$tempsymbol = mysql_query("SHOW COLUMNS FROM ".$clientname."securitiestable"); 

Последняя вещь, чтобы проверить - это $clientname набор?

Сказав это - возьмите совет Билла Карвина!

3

Я бы использовал mysql_fetch_assoc() для запроса SELECT, а затем позвонил array_keys() в любой строке результата.

$selectcols = "SELECT * FROM ".$clientname."securitiestable"; 
$tempcols = mysql_query($selectcols) or die(mysql_error()); 
$returnedcols = mysql_fetch_assoc($tempcols); 
$colnames = array_keys($returnedcols); 

Вашей фатальная ошибка из-за отдельный вопрос: у вас есть $ символа в начале вашего вызова функции. Это юридический синтаксис PHP, потому что вы можете поставить имя функции в переменной и называть его косвенно:

function foo($arg) 
{ 
    echo $arg . "!\n"; 
} 

$bar = "foo"; 

$bar("hello world"); 

Но в вашем случае, вероятно, это не то, что вы хотели. Если вы хотите вызвать функцию по ее буквальному имени, не ставьте перед ней $. Если у вас есть строковая переменная, содержащая имя функции, вы можете использовать переменную, как показано выше.

+0

Я знаю, что это сообщение устарело, но мне просто интересно; Ваш метод выше - будет ли это не выбирать КАЖДУЮ строку в БД? Когда 'SHOW COLUMNS FROM' просто захватит имена столбцов? Извините мою немоту. – 2012-04-10 18:38:10

+0

Если вы используете 'mysql_unbuffered_query()', вы можете получить только первую строку. –

Смежные вопросы