我是 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()
将返回一些东西,不管查询是如何执行的。如果失败,你会得到一个 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/