2016-03-11 49 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已纠正。谢谢! –