php - 我该如何解决这个由 if 语句引起的奇怪的 PHP/MySQL 问题?

标签 php html mysql if-statement html-table

我是 PHP/mySql 的初学者。我正在编写 CMS,但仍处于早期阶段。 我写了一段代码来从 mySql 表中获取信息,但将其放入 HTML 表中。问题是,在应用某个 IF 语句之前,显示了 mySql 表中的全部数据,这正是我想要的......但是在应用该 IF 语句之后,我的部分数据就消失了! (第一个要具体)..所以这是我的代码,可以有效地帮助您诊断我的问题..如果您需要其他部分,请告诉我。

首先,这是我在应用 IF 语句之前的 HTML 表格:

before

这是之后:

after

这是我没有 IF 语句的代码:

<?php
function make_table() {
    $myResult = get_ind_info_fam();
    $ind_field_count = mysql_num_fields($myResult) -1;

            // Table to show ALL individuals info.
            echo "<table>" ;

            // Table Headers:
            for ($i = 2 ; $i <= $ind_field_count ; $i++) {
                    $field_name = mysql_field_name($myResult, $i);
                    $field_name = ucwords($field_name);
                    if ($i ==2) {
                        $field_name = "Individual Name";
                    }
                    echo "<th>{$field_name}</th>";
                }

            // Table Data :
                while ($myData = mysql_fetch_array($myResult)){
                    echo "<tr>";
                    for ($i = 2 ; $i <= $ind_field_count ; $i++) {
                        echo "<td>{$myData[$i]}</td>";
                    }
                    echo "</tr>";
                }
            echo "</table>" ;
  }
 ?>

以及带有 IF 语句的代码:

<?php
function make_table() {   
     $myResult = get_ind_info_fam(); 
// Checking if a correct $_GET["fam"] is entered
//  (not out of range) so an empty table won't be shown :

    if (isset($myResult)) {

        if($myData = mysql_fetch_array($myResult)) {
            $ind_field_count = mysql_num_fields($myResult) -1;

            // Table to show ALL individuals info.
            echo "<table>" ;

            // Table Headers:
            for ($i = 2 ; $i <= $ind_field_count ; $i++) {
                    $field_name = mysql_field_name($myResult, $i);
                    $field_name = ucwords($field_name);
                    if ($i ==2) {
                        $field_name = "Individual Name";
                    }
                    echo "<th>{$field_name}</th>";
                }

            // Table Data :
                while ($myData = mysql_fetch_array($myResult)){
                    echo "<tr>";
                    for ($i = 2 ; $i <= $ind_field_count ; $i++) {
                        echo "<td>{$myData[$i]}</td>";
                    }
                    echo "</tr>";
                }
            echo "</table>" ;
        }
    }
   }
?>

这是我的 get_ind_info_fam() 函数:

function get_ind_info_fam()
{
   //****Family name is clicked*****

    //This function gets Family ID from addresse bar
    //and extract individual info according to that ID by $_GET variable
    //
    //NOTE : this function is used in the article to show content of
    //       selected family name.

        if(is_numeric($_GET["fam"])) {
            $query ="SELECT * FROM individual
                        WHERE g_id={$_GET["fam"]}";
            $result = mysql_query($query);
             return $result ;
        }
}

我真的不知道要告诉您什么才能了解​​全貌,但如果有任何不够清楚的地方,请告诉我。

最佳答案

您使用 if() 版本在两个地方获取数据行:

if($myData = mysql_fetch_array($myResult)) {

while ($myData = mysql_fetch_array($myResult)){

第一行被丢弃,因为您只是输出表头行,而不是每次都输出行数据。

同样,您最初的 isset() 检查不会执行您想要的操作。 mysql_query() 将返回一些东西,不管查询是如何执行的。如果失败,你会得到一个 bool 值 FALSE,否则你会得到一个结果集句柄。这意味着 isset() 将始终成功,因为该值(令人惊讶)始终已设置。你想要的是:

$myResult = get_ind_info_fam(); 

if ($myResult === FALSE) {
   die(mysql_error());
}
if (mysql_num_rows($myResult) == 0) {
    echo "nothing found";
} else {
    .... print out the results ...
}

关于php - 我该如何解决这个由 if 语句引起的奇怪的 PHP/MySQL 问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5653966/

相关文章:

PHP 条件和回显 HTML

php - ERR_CONNECTION_RESET 与 PHP 脚本

php - 如何更新图像?

php - 我的示例代码无法在短信网关集成中工作?下一步我该怎么办?

html - 如何对图像应用效果,使图像在页面中滑动?

html - 隐藏在绝对位置的 CSS 溢出

jquery - div 滑动打开然后关闭

mysql - 如何使用 mysql 根据同一个表的其他两列填充列?

php - 如何改进我的 php 添加脚本?

mysql - 按值更新 MySql 表