2014-07-30 7 views
-2

Я получаю данные от пары запросов на php-странице. Все петли и запросы работают отлично, но я получаю ошибку в следующем.неопределенная переменная ошибка во время цикла PHP - ACCESS

ОШИБКА ПЕРВАЯ:

$sql_pso_sign="SELECT * FROM Table"; 
$rs_pso_sign=odbc_exec($conn,$sql_pso_sign); 
if (!$rs_pso_sign) { 
    exit("Error in SIGNATURE TABLE INFO SQL"); 
} 
while (odbc_fetch_row($rs_pso_sign)) { 

     $psoName = odbc_result($rs_pso_sign, "NAME"); 
     $psoSign = odbc_result($rs_pso_sign, "SIGNATURE"); 
     $psoDate = odbc_result($rs_pso_sign, "DATE"); 

    } 

    echo $psoName; 

ошибка неопределенной переменной: pso_name;

Я скопировал его с той же страницы, что и другие циклы, которые отлично работают. один рабочий на одной странице

$sql_items="SELECT * FROM Table2"; 
$rs_items=odbc_exec($conn,$sql_items); 
if (!$rs_items) { 
    exit("Error in table2 SQL"); 
} 
while (odbc_fetch_row($rs_items)) { 

    $calc = odbc_result($rs_items, "ITEMS_CALC"); 
    $dsd = odbc_result($rs_items, "ITEMS_DSD"); 
    $wrs = odbc_result($rs_items, "ITEMS_WRS"); 
    $specs = odbc_result($rs_items, "ITEMS_SPECS"); 
    $ochk = odbc_result($rs_items, "ITEMS_OTHERS"); 
    $otxt = odbc_result($rs_items, "ITEMS_OTHERS_TXT"); 

} 
echo $calc; 

он стал очень расстроен, я удалил и вставили же в то время как петли из других и я поставил эхо-проверки, которые не эхо в то время как цикл первого запроса.

Любые предложения?

АКТУАЛЬНО КОД:

$sql_pso_sign="SELECT * FROM SIGNATURES_DASO WHERE DASO_NO ='".$daso_no."'"; 
$rs_pso_sign=odbc_exec($conn,$sql_pso_sign); 
if (!$rs_pso_sign) { 
    exit("Error in SIGNATURE TABLE INFO SQL"); 
} 
while (odbc_fetch_row($rs_pso_sign)) { 

     $psoName = odbc_result($rs_pso_sign, "NAME"); 
     $psoSign = odbc_result($rs_pso_sign, "SIGNATURE"); 
     $psoDate = odbc_result($rs_pso_sign, "DATE"); 

    } 

echo $psoName; 

в $ daso_no имеет значение в нем, и я проверил запрос правильно

+1

Сначала исправить ошибки синтаксиса. –

+0

markdown highlighter уже показывает его (или, может быть, опечатку) – Ghost

+1

Во-вторых, переменная называется '$ psoName', а не' $ pso_name; 'и это ошибка, которую вы видите –

ответ

1

Убедитесь, что запрос возвращает строку:

$sql_pso_sign="SELECT * FROM SIGNATURES_DASO WHERE DASO_NO ='".$daso_no."'"; 
$rs_pso_sign=odbc_exec($conn,$sql_pso_sign); 
if (!$rs_pso_sign) { 
    exit("Error in SIGNATURE TABLE INFO SQL"); 
} 
if (odbc_fetch_row($rs_pso_sign)) { 

    $psoName = odbc_result($rs_pso_sign, "NAME"); 
    $psoSign = odbc_result($rs_pso_sign, "SIGNATURE"); 
    $psoDate = odbc_result($rs_pso_sign, "DATE"); 

    echo $psoName; 
} else { 
    echo "$daso_no not found."; 
} 

Обратите внимание, что вам не нужно использовать while цикл, если запрос только должен вернуть одну строку.

+0

теперь отлично работает. Спасибо. Один вопрос. Если мы хотим, чтобы одна запись в цикле была не лучшим подходом? – Alz

+0

Правильно. Цикл while предназначен для многократной обработки всех записей. Нет необходимости, если есть только одна запись. – Barmar

1

Вы неправильно назвали переменная

$pso_name; 

Изменить его

$psoName; 
+1

Недопустимые кавычки должны быть ошибкой копирования, иначе скрипт даже не запустится. – Barmar

+0

Да, ты прав :) Я отредактировал его сообщение и мое –

+0

, о котором вы процитировали цитаты, о которых вы говорите? @barmar? – Alz