gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 00:07:05 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com