2012-08-29 128 views
0

我目前試圖使用mysqli製作腳本,但是當我運行它時,它會返回一個500內部錯誤,但是當我刪除fatch_array時,它將在沒有它的情況下運行。 我一直在使用PHP.Net mysqli_手冊。 PHP代碼PHP Mysqli Fetch_array導致500內部錯誤

<?php 
{ /* Global Data */ 
$GetPath = $_GET['p']; 
$SqlUser = "root"; 
$SqlPass = "***********"; 
$SqlHost = "localhost"; 
$SqlData = "Site"; 
} 
{ /* Mysql Connect */ 
$Sql = new mysqli($SqlHost, $SqlUser, $SqlPass, $SqlData); 
if ($Sql->connect_error) { die("Sorry, Could not connect (".$Sql->connect_errno.") ".$Sql->connect_error);} 
} 
{ /* Test */ 
$Page = $Sql->real_escape_string($GetPath); 
$SqlData = "SELECT * FROM pages WHERE Page = '".$Page."'"; 
$SqlQuery = $Sql->query($SqlData); 
$Data = $SqlQuery->fetch_array(MYSQLI_ASSOC); 
echo $Data['Title']; 
$Sql->close(); 
} 
?> 

那麼是什麼原因造成的?我用fefore的mysql_ /命令,現在我切換到mysqli_ *

+1

你確定它是'fetch_array()'導致500錯誤嗎?你有錯誤信息嗎? – Tchoupi

+0

@MathieuImbert當我刪除包含fetch_array()的行時,它運行時沒有錯誤,並且它只表示HTTP-feil 500(內部服務器錯誤)在我運行它時的谷歌瀏覽器中。 – Teknikk

+0

您需要啓用錯誤報告,'ini_set('display_errors',1); 'ini_set('error_reporting',-1);' – Tchoupi

回答

1

你的代碼沒問題。您的查詢出錯了。

的一件事是,這是造成它是$GetPath = $_GET['p'];

它要麼是空的或具有使其不對查詢的值。

或者您的表名錯誤。

+0

看起來像查詢出錯了,因爲它選擇Page時,它是網址。 – Teknikk

0

How about you change the following line:

if ($Sql->connect_error) { die("Sorry, Could not connect (".$Sql->connect_errno.") ".$Sql->connect_error);} 

to:

if ($Sql->connect_error) { die("Sorry, Could not connect (".$Sql->connect_error.") ".$Sql->connect_error);} 

Note the connect_errno mistake

對此深感抱歉......不是解決辦法,忘記了connect_errno實際上是一個變量。

1

你不應該假設你的查詢成功:

$SqlQuery = $Sql->query($SqlData); 

if (!$SqlQuery) { 
    echo $mysqli->error; 
} 

在你的情況$_GET['p']是不確定的,它可能是什麼導致你的查詢失敗,但你永遠不會知道,除非你檢查錯誤。