2012-08-29 146 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']是不确定的,它可能是什么导致你的查询失败,但你永远不会知道,除非你检查错误。