0

我有这个 php:

$description = mysql_query(utf8_decode("SELECT `typealertesecmar` FROM `Opérations n°" . $row['idops'] . "` WHERE `typealertesecmar`!='' ORDER BY `id` DESC LIMIT 1")) or die(mysql_error());
    $row6 = array();

    while($row7 = mysql_fetch_assoc($description)) {
        $row6[] = $row7;
    }
    foreach($row6 as $row7) { 
        $description = utf8_encode(stripslashes($row7['typealertesecmar']));
    }

此代码将最后一个不为空的“typealertesecmar”返回给我。此代码在其他几个字段中重复

在我尝试这样做之后

if (empty($description) && empty($complement) && empty($nbperso) && empty($infrapec) && empty($rempec) && empty($remrsm)) {
    echo "<td>Aucune Information sur l'opération n'est disponible.</td>";
  }
  elseif (empty($description) && empty($complement) && empty($nbperso) && empty($infrapec) && empty($rempec)) {
    echo"<td>Description RSM : " . $remrsm . "</td>";
  }

等等。对于所有字段,我尝试验证字段是否为空以回显字符串。但为空字段返回多个“资源 ID #”

请帮忙!

4

1 回答 1

1

mysql_query()不直接返回数据,它返回一个资源标识符,您可以使用它从结果集中获取行。

建议改为:

$description = ''; // default blank value
$result = mysql_query(utf8_decode("SELECT `typealertesecmar` FROM `Opérations n°" . $row['idops'] . "` WHERE `typealertesecmar`!='' ORDER BY `id` DESC LIMIT 1")) or die(mysql_error());
$row6 = array();

if($result && mysql_num_rows($result) > 0) {
    while($row7 = mysql_fetch_assoc($result)) {
        $row6[] = $row7;
    }
}

现在,如果在查询中未找到任何结果,$description它将是一个空字符串和一个空数组。$row6


旁注:该mysql_*库早已被弃用,请考虑升级到 PDO 或 MySQLi。您的查询中有一个参数,因此那里可能存在二阶 SQL 注入漏洞。此查询将是 PDO 或 MySQLi 中准备好的语句的良好候选者。

于 2013-06-26T07:29:37.230 回答