0

我正在尝试创建一个 PHP 函数,它将从数据库中回显信息。我的 col 名称看起来像banana[1]、banana[2]、apple[1]、apple[2]、apple[3] 等等。

该功能将选择水果

function fruits($fruit){

}

然后在该函数中,我将遍历水果。

我该如何回应这些?

echo $fruit[$i];

显然行不通。

很基本,但我无法弄清楚。串联杀死我。

function ponctuation($section,$sect){

switch($section){
    case 'apple':
        $i=1;
    break;
    case 'banana':
        $i=13;
    break;
}

global $mysql_tablename;
global $FName;
global $Lname;

if(isset($mysql_tablename)){
$result = mysql_query("SELECT * FROM $mysql_tablename WHERE FName='$FName' AND Lname='$Lname'");
    $row = mysql_fetch_array($result);

echo '<form method="post" action="ponctuation.php?'.${$section.$sect}.'_valider">';
echo '<ul>';
$query = mysql_query("SELECT * FROM `ponct_enonces` WHERE `section`='$section' AND `sect`='$sect'");
while($row_q = mysql_fetch_assoc($query)) {
    if($row_q['enon']==0 && $row_q['senon']==0){
        echo '<h2>'.$row_q['enonce'].'</h2>';
    }
    if($row_q['enon']==1){
            echo '<h3>'.$row_q['enonce'].'</h3>';
            echo '<textarea rows="3" cols="100" name="'.$i.'" wrap="physical">' . $row[$section[$i]] . '</textarea>';
    }
    if($row_q['senon']==1){
            echo '<h4>'.$row_q['enonce'].'</h4>';
            echo '<textarea rows="3" cols="100" name="'.$i.'" wrap="physical">' . $row[$section]. '</textarea>';
    }
    $i++;
    }
echo '</ol>';
echo '<input type="submit" name="submit" value="Valider"/>';
echo '</form>';
}

}

代码有点难看,有的 var 有法语名字,有的有英文名字。

4

2 回答 2

0

col 名称不会为您扩展为 PHP 数组结构,例如

SELECT fruit[1], fruit[2], ...., fruit[100]

会给你相当于

$row = array(
   'fruit[1]' => someval,
   'fruit[2]' => someval,
   ...
);

如果你想迭代那些,你将不得不变得丑陋:

$fruit = array();
for ($i = 0; $i <= 100; $i++) {
    $fruit[$i] = $row['fruit[' . $i . ']'];
}

这引出了一个问题……为什么?这是一个可怕的数据结构。将其正确规范化为“水果属性”子表将为您省去这个麻烦,并且还允许您拥有n属性,而不是固定的 1..100 范围或您拥有的任何东西。

于 2012-10-01T04:12:20.173 回答
0

如果您尝试循环遍历一行中的所有列,您可以使用fetch_array

$result = $mysqli->query($query);
$row = $result->fetch_array();

// loop over columns
for ($i = 0, $count = count($row); $i < $count; $i++)
    echo $row[$i];

这样,您就不必担心列名。不过,我可能误解了你的问题。

于 2012-10-01T04:16:00.737 回答