我有这个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#”
请帮忙!答案 0 :(得分: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。您的查询中有参数,因此可能存在Second Order SQL Injection漏洞。此查询将是PDO或MySQLi中准备语句的良好候选者。