2013-04-19 3 views
1

나는 데이터 항목 PHP 코드가 있습니다. 사용자가 쉽게 액세스 할 수 있도록 별도의 페이지에 표를 선택하도록 허용하고 있습니다. 선택한 테이블을 "maintable"테이블에 삽입하는 코드를 얻을 수는 있지만 그 테이블에서 정보를 얻을 수는 없습니다. 동일한 테이블에서 해당 데이터베이스에 삽입하는 경우에도 삽입 테이블 파일은 현재 테이블 이름을 가져 오지 않습니다. 그래서이 문제를 해결할 수 있다면 그 문제도 해결할 수 있습니다. maintable 테이블에는 다른 데이터베이스 중 하나에 레코드가 하나 뿐인 열이 있습니다. 사용자가 다른 데이터베이스의 다른 테이블을 모두 볼 수 있으므로 직접 액세스 할 수 없도록이 작업을 수행하고 있습니다.mysqli 쿼리가 결과 또는 오류를 반환하지 않습니다 PHP 코드

data-entry-header.php 파일에는이 데이터베이스 연결에 사용하고있는 $ connect 문이 포함되어 있습니다. 결과적으로 테이블 이름이없는 main-form.php 파일이 생깁니다. 그래서 어떤 에러도 던지지 않고 테이블 이름을 얻지 못합니다. insert 문에 동일한 문을 사용했기 때문에 connect 문과 table/column 이름이 정확하다는 것을 알고 있습니다.

include 'data-entry-header.php'; 
    $keys = array(); 

    /* Query for Main Table Value */ 
    $string = 'SELECT TableName FROM maintable'; 
    $resultMain = mysqli_query($connect, $string) or die(mysqli_error($link)); 
    while ($rowMain = mysqli_fetch_row($resultMain)){ 
     $table = $rowMain[0]; 
    } 

    /* Display Message or Table */ 
    if ($table = NULL || $table = ""){ 
     echo 'No Main Table has been set. Go to the <a href="set-main-table.php">Set Main Table</a> page to select a Main Table.'; 
    } 
    else { 
     include 'main-form.php'; 
    } 

    /* Get footer Contents */ 
    include "../footer.php"; 
+0

하면 오류보고를 활성화합니까 데 도움이? –

+0

데이터베이스에서 직접 쿼리를 실행하고 결과를 확인하십시오. – Aris

+0

TableName은 fieldname (또는 columname)이어야한다고 생각하십니까? – bestprogrammerintheworld

답변

3
if ($table = NULL || $table = ""){ 

당신은 비교와 과제 =을 혼동하고 ==

당신은 아마 시도해야합니다 : 아래 사항이 추가, 대신

if ($table == NULL || $table == ""){ 
+0

'if (empty ($ table)) {}'를 사용하는 것이 더 편할 것입니다. – vikingmaster

+0

@ lefty55104 - 질문을 편집하여 ($ table == NULL || $ table == "") {- 같은 생각을 피하십시오 ... – bestprogrammerintheworld

-1

또는 사망

echo mysqli_error($link);

또한 쿼리에서 columnName FROM table이 아니겠습니까?

+0

나는 그것에 익숙하지 않기 때문에, 왜 나는 죽을 때의 에코를 선택할 것입니까? – lefty55104

1

다른 많은 오류가 코드에 있습니다.

  • 대신 die()

    , 당신은 누구에 민감한 정보를 공개하지 것이다 trigger_error(); 더 편리를 사용해야합니다.
  • 하나의 결과 만 기대하는 경우 루프에 아무런 의미가 없습니다.
  • PHP는 느슨하게 입력 된 언어입니다. 과도한 조건이 필요 없습니다. 단지 if($table) 또한 의미있는 (그리고 일치) 변수 이름을 사용하여 대부분의 경우
  • 에 충분하다 많은

    $sql = 'SELECT TableName FROM maintable'; 
    $res = mysqli_query($connect, $sql) or trigger_error(mysqli_error($connect)); 
    //           $connect, not $link^
    $row = mysqli_fetch_row($res); 
    
    /* Display Message or Table */ 
    if (!$row){ 
        echo 'No Main Table has been set. Go to the <a href="set-main-table.php">Set Main Table</a> page to select a Main Table.'; 
    } else { 
        $table = $row[0]; 
        include 'main-form.php'; 
    } 
    
+0

현재 디버깅 모드에 있으므로 오류 코드가 도움이됩니다. 나는 일단 내가 살아 간다면 거기에 메시지를 쓸 계획이다.나는 trigger_error를 조사 할 것이다. 루프가 필요 없다는 소식을 듣게되어 기쁩니다. 방법이 있다고 생각했지만, 어떻게해야할지 모르겠습니다. – lefty55104

+0

trigger_error를 사용하면 특별한 디버깅 모드가 전혀 필요 없습니다. 그러나 필요할 때마다 오류 메시지가 나타납니다. 이것이이 기능을 사용하는 요점입니다. 스스로 눈을 뜨지 마십시오 : "모드"또는 다른 조건에도 불구하고 오류 메시지가 필요합니다. 라이브에서 소리내어 울리는 것은 자살이다. –

관련 문제