[英]How do I fix this weird PHP/MySQL issue caused by if statement?
我是PHP / mySql的初学者。 我正在编写CMS,但仍处于早期阶段。 我编写了代码,将信息从mySql表中获取,但是将其存储到HTML表中。 问题是,在应用某个IF语句之前,将显示mySql表中的整个数据,这就是我想要的...但是,在应用该IF语句后,我的部分数据就消失了! (首先要具体说明)..因此,这是我的代码,可以帮助您高效地诊断我的问题..如果您需要其他内容,请告诉我。
首先,这是在应用IF语句之前的HTML表:
之后:
这是我的代码,没有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()
将返回SOMETHING,无论查询如何执行。 如果失败,则得到布尔值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 ...
}
如果没有IF,您将无法做到这一点:
if($myData = mysql_fetch_array($myResult)) {
作为参考,请在If语句后立即检查。
这是您的第二条if
语句:您正在获取结果集的第一行,此后不对其进行任何操作,因此当您进入while
循环并获取第二行时,它便消失了。
这行:
if($myData = mysql_fetch_array($myResult)) {
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.