2016-03-11 71 views
-1

我知道有這樣的幾個問題,但我似乎無法使用我見過的任何答案修復我的代碼。 我正在使用PHP 5.6.15版,我從我的PHPMYADMIN數據庫中提取信息。我試圖使用的表稱爲大學,該表的主鍵是'UNI_ID'。它說,當我使用var_dump時,它是一個數組,但我無法弄清楚如何將其轉換爲字符串,或者即使這是我需要做的。 「刪除」和「編輯」按鈕是導致錯誤的那些錯誤,因爲錯誤是針對這些行的。我也收到一個數組字符串轉換錯誤。 我試過使用isset,但它仍然無法正常工作。 這似乎工作正常的另一個頁面上有相同的代碼,只是無法找到差異。 這裏是我的代碼:PHP非法字符串偏移錯誤和字符串轉換錯誤

<?php 
     $sql="SELECT * FROM university"; 
     $result = mysqli_query($con, $sql); 


     while($row=mysqli_fetch_assoc($result)) 
     { 
     echo "<table border='' width='100%'><tr><td width='75%'><b><a href=university.php?=UNI_ID".$row=["UNI_ID"].">".$row["Name"]."</b></td>". 
     "<td><img src=images/".$row["Logo"]." width= '25px' ></td></tr>". 
     "<tr><td><b>City: </b>".$row["Location"]."</td>". 
     "<td><b>Rank: </b>".$row["Ranking"]."</td></tr>"; 
     if(isset($_SESSION["Email"])){ 
      if($_SESSION["Admin"] == "1"){ 
       echo "<tr><td><input type=\"button\" value=\"Delete\" onClick=\"window.location.href='deleteuni.php?=UNI_ID".$row["UNI_ID"]."'\">". 
       "<input type=\"button\" value=\"Edit\" onClick=\"window.location.href='edituniform.php?=UNI_ID".$row["UNI_ID"]."'\"></td></tr></table>"; 
      } 
     } 
     else { 
      echo "</table>"; 
     } 
    } 
?> 
+1

錯字:'$ row = [「UNI_ID」]'。 –

+0

在'href's中看起來像一個拼寫錯誤:將'?= UNI_ID'更改爲'?UNI_ID ='。 – ksimka

+0

@AlinPurcaru是的,現在已經奏效了。非常感謝你。我不敢相信我已經花了這麼長時間在這樣一個愚蠢的錯誤! –

回答

1

你必須在你的代碼一個錯字:

$row=["UNI_ID"] 

在那裏你可能是指有:

$row["UNI_ID"] 

我們解釋什麼用錯字發生目前,因爲它有點有趣。您可能會期望語法錯誤,但是因爲您的PHP> 5.4,它(幾乎)是有效的代碼。

  • ["UNI_ID"]將創建一個數字索引數組,其中包含一個字符串。相當於array(0 => "UNI_ID")
  • 接下來,新創建的數組將與之後的數組連接,直到;,變成無用的怪物字符串並拋出該轉換,因爲您將數組連接到字符串。但通知錯誤是低級別的,所以它不會停止腳本,它會繼續。
  • 然後它將該怪物字符串分配給您的$ row,將其完全更改爲字符串而不是之前的數組。並且下次你嘗試從$ row得到一些東西時,你會得到字符串偏移錯誤,因爲字符串可以像數組一樣訪問,但只能用於某些鍵,而你試圖獲得的字符串肯定不在其中。所以再次,沒有嚴重的錯誤,並且腳本繼續。

這表明PHP並不是這樣一種偉大的語言,因爲它允許您最終得到像這樣的錯字,只會觸發Notices。

+1

你打錯了*你可能打算擁有的位置:*,我猜這是爲了'$ row [「UNI_ID」]':p – Mikey

+0

@Pigeon已糾正。謝謝! –