【问题标题】:PHP script displaying a blank page显示空白页面的 PHP 脚本
【发布时间】:2016-04-08 12:11:04
【问题描述】:

这是我的脚本,它显示一个空白,我不知道问题是什么。帮助!!!! #PHP新手

 <?php include "connection.php"; 
    // Get the ID from URL.
   if(isset($_GET['id']));
    $id = $_GET['id'];
    $query="SELECT * FROM module WHERE id= '$id'"; 
    $result= mysqli_query($m, $query); 
     while ($row = mysqli_fetch_array($result)){ 
     $title=$row['title']; 
     $level=$row['level']; 
     $credits=$row['credits'];
     $school=$row['school']; 
 echo $title. " " . $level. " " . $credits. "<br />"; 
 }    
 ?> 

错误:

您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行的“WHERE id='Careers'”附近使用的正确语法

【问题讨论】:

  • 在您的代码顶部添加 ini_set('display_errors', 1);ini_set('display_startup_errors', 1);error_reporting(E_ALL); 并告诉我们是否报告了任何错误。还有,$_GET的内容是什么。
  • 你能确保connection.php工作正常吗?
  • 你是对的!我将其删除以避免其他人制作此msitake
  • @user5579012 你没看到我一个小时前发布的答案吗? stackoverflow.com/a/36499440/1415724
  • @user5579012 您在“其他”答案下发表了相同的评论,而不是我的stackoverflow.com/a/36499440/1415724在这里对勾号/复选标记做同样的事情,直到它变成绿色。这会通知社区,找到了解决方案。我希望你不会勾选其他答案lol,不客气。

标签: php mysql database select echo


【解决方案1】:

这里一个明显的问题是,您将“语句结束”字符包含在一个分号中。

分号(如果不是拼写错误的话)就是这样做的,“结束”语句。

if(isset($_GET['id']));
                       ^ right there.

它应该是一个大括号{ 来代替它并读作:

if(isset($_GET['id'])){

并且该条件语句应该有一个右大括号}

旁注:分号在 PHP 中被认为是一个有效字符,如果 GET 数组有值,它不会为它抛出错误。

但是,您应该检查其余代码的错误。

在打开 PHP 标记后立即将错误报告添加到文件顶部 例如&lt;?php error_reporting(E_ALL); ini_set('display_errors', 1); 然后你的代码的其余部分,看看它是否产生任何东西, 以及or die(mysqli_error($m))mysqli_query()

同时确保您确实在使用 MySQLi_ API 进行连接(不同的 MySQL API 不会混用)并且 GET 数组具有值。


这是一个重写,并假设使用MySQLi_ API 成功连接数据库。

<?php

    error_reporting(E_ALL);
    ini_set('display_errors', 1);

if(isset($_GET['id'])){
   $id = $_GET['id'];
} else{
    echo "ID is not set. You need to investigate it.";
    exit; // This will stop your script, dead in its tracks.
}

$query="SELECT * FROM module WHERE id= '$id'"; 
$result= mysqli_query($m, $query) or die(mysqli_error($m)); 

 while ($row = mysqli_fetch_array($result)){ 
 $title=$row['title']; 
 $level=$row['level']; 
 $credits=$row['credits'];
 $school=$row['school']; 

    echo $title. " " . $level. " " . $credits. "<br />"; 
}    

参考资料:


编辑:

取自cmets:

“这是我的查询,$query="SELECT id, title module WHERE id= '$id'"; – user5579012 38 分钟前”

Link to that comment...

这不是您在原始问题中发布的内容。

您发布了SELECT * FROM module WHERE id= '$id'

这里有语法错误,title 后面缺少逗号。

它应该读作:

$query="SELECT id, title, module WHERE id= '$id'"; 

所有列都需要用逗号分隔,但不是最后一列是module

【讨论】:

  • 发布的错误不支持这个问题,不支持我给你的答案以及你有什么代码和我为 OP 编写的重写。
【解决方案2】:

确保一切正常。如果可能,回显错误。

<?php include "connection.php"; 
// Get the ID from URL.
 if(isset($_GET['id'])){
$id = $_GET['id'];
$query="SELECT * FROM module WHERE id= '$id'"; 
$result= mysqli_query($m, $query);

if($result){ //query is ok
    if(mysqli_num_rows($result) > 0){//check if a record exists

        while ($row = mysqli_fetch_array($result)){ 
                 $title=$row['title']; 
                 $level=$row['level']; 
                 $credits=$row['credits'];
                 $school=$row['school']; 
            echo $title. " " . $level. " " . $credits. "<br />"; 
        }
     }else{ //no result found
         echo "no results found!";
     }
  }else{ //some error in querying
    echo mysqli_error($m);
   }
}
?>

【讨论】:

  • 你测试过这段代码吗?提示:它永远不会检查 $result。
  • 使用您提供给我的代码后,我现在收到此错误,您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行的“WHERE id='Careers'”附近使用的正确语法
  • 是的,我测试过,没有返回结果
  • 问题出在查询上,我稍微改了一下,我也选择了错误的表,这个查询工作,$query="SELECT id, dept, overview FROM course WHERE careers= $id ";感谢您的帮助!!!
猜你喜欢
  • 2011-01-09
  • 2015-07-12
  • 2013-03-03
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
  • 2011-04-10
  • 1970-01-01
  • 2014-02-26
相关资源
最近更新 更多