2013-11-27 51 views
-1

我有以下PHP腳本;Mysql_fetch_array不工作?

if(isset($_POST[SET])) 
{ 
    $cek  = $_POST[CEK]; 
    $jumlah = count($cek); 
    $hadiah = $_POST[HADIAH]; 
    for($i=0; $i < $jumlah; $i++) 
    { 
     $sql_cek = "SELECT * FROM master_propinsi WHERE ID = '$cek[$i]'"; 
     $hasil_cek = mysql_query($sql_cek); 
     WHILE($data_cek = mysql_fetch_array($hasil_cek)) 
     { 
      $kota = $data_cek[kota]; 
      echo $kota; 
      $queryxxx = "SELECT * FROM unik WHERE kota = '$kota' ORDER BY RAND() LIMIT 1"; 
      echo $queryxxx; 
      $hasilxxx = mysql_query($queryxxx); 
      $dataxxx = mysql_fetch_array($hasilxxx); 
      echo $dataxxx[ID];//This line is Problem. The data can't Appear 
      $query_to_unik = "UDPATE unik SET hadiah = '$hadiah' WHERE kota = '$kota' AND ID = '$RID' "; 
      echo $query_to_unik; 
      $hasil_to_unik = mysql_query($query_to_unik); 
     }//end WHILE 
    }//end for 
    if($hasil_to_unik) 
    { 
     echo "ID untuk kota tersebut sudah di setting"; 
    } 
    else 
    { 
     echo "ID untuk kota tersebut belum berhasil di setting"; 
    } 
} 

該腳本有HTML喜歡這幅畫enter image description here

的解釋腳本

  1. 我們選擇(檢查)市/哥打
  2. 選擇的JENIS Hadiah
  3. 點擊按鈕SET

問題是echo $dataxxx[ID];無法顯示結果。

有人可以幫助解決這個問題嗎?

任何意見將不勝感激。

感謝

這是結果當我運行該腳本 enter image description here

+2

停止使用'mysql_query'周圍放屁。認真。沒有很好的理由將它用於新代碼。誰還在教導那個廢話? – cHao

+0

SO應該在標有'mysql'的每個頁面的頂部都有一個永久性的帖子,以便停止使用它@cHao也許你可以放入一個好詞;-)就我個人而言,我越來越厭倦和煩惱,不斷重複自己關於它的棄用。 –

+0

除了[mamdouh的回答](http://stackoverflow.com/a/20233594/727208)中提到的東西,我還要指出,如果你的'unik'表有超過100個條目,那麼你應該避免使用' ORDER BY RAND()'。 [本文](http://jan.kneschke.de/projects/mysql/order-by-rand/)將解釋從表中檢索隨機條目的不同方法。 –

回答

1

首先,你

if(isset($_POST[SET])) 

應該是:

if(isset($_POST['SET'])) 

與同爲所有其他職位索引,如:

$cek = $_POST[CEK]; 

$cek = $_POST['CEK'];

和用於:

回波$ dataxxx [ID]; //這行是問題。該數據不能出現

應該echo $dataxxx['ID'];

注意採取:

一定不要用mysql嘗試mysqliPDO 也,你的代碼只是說歡迎SQLinjection 你也需要了解Prepared Statements。 最後,一個好的視頻來了解爲什麼我說這是Programming With Anthony - Prepared Statements

+1

是的,它應該是,但不會導致該錯誤。代碼仍然會運行,只是通知。 –

+0

@Hanky웃Panky - 我相信這取決於PHP版本。雖然我不確定,即使這是真的,但這仍然是一種不好的做法。但感謝通知:) –

+0

@mamdouh alramadan其他運行好了。並沒有什麼問題。除了$ dataxxx [ID]的echo外,其他的echo都會運行;感謝幫助。 – Uchsun

0

嘗試驗證查詢

$sql_cek = "SELECT * FROM master_propinsi WHERE ID = '$cek[$i]'"; 
      $hasil_cek = mysql_query($sql_cek); 

if($hasil_cek){ 
//query worked 
} else { 
//query failed 
} 
0

可以使用assoc

WHILE($data_cek = mysql_fetch_assoc($hasil_cek)) //use assoc 
      { 
       $kota = $data_cek['kota']; //pakai kutip 
       echo $kota; 

       $queryxxx = "SELECT * FROM unik WHERE kota = '$kota' ORDER BY RAND() LIMIT 1"; 
       echo $queryxxx; 
       $hasilxxx = mysql_query($queryxxx); 

       $dataxxx = mysql_fetch_assoc($hasilxxx); //use assoc 

       echo $dataxxx['ID'];//This line is Problem. The data can't Appear 
            //harus gunakan tanda kutip 




       $query_to_unik = "UDPATE unik SET hadiah = '$hadiah' 
                WHERE kota = '$kota' AND ID = '$RID' "; 

       echo $query_to_unik;         

       $hasil_to_unik = mysql_query($query_to_unik); 



      }//end WHILE 





    }//end for 
+0

我嘗試過,仍然無法工作 – Uchsun