htmlentities()期望参数1为字符串

时间:2013-11-20 12:15:51

标签: php

我试图将数据库中的数据导入文本字段:

$fothersq=("SELECT others FROM january");
$fothers=mysql_query($fothersq);
<input type="text" placeholder="0" name="febothers" size="11" value="<?php if(@$fothers){echo htmlentities(@$fothers);} ?>">

但我在文本字段中遇到了此错误。

  


警告:htmlentities()期望参数1为   字符串,资源在 C:\ xampp \ htdocs \ CashFlow \ febprev.php 中给出   在线 116

也在另一个文本字段中我使用此编码来测试:

<input type="text" name="febbonus" size="11" placeholder="0" value="<?php if(@$fbonus){echo (@$fbonus);} ?>"> 

我收到了这个错误:

  

资源ID#7

任何想法?

3 个答案:

答案 0 :(得分:2)

错误告诉您究竟是什么问题:

  

警告:htmlentities()要求参数1为字符串,资源   在第116行的C:\ xampp \ htdocs \ CashFlow \ febprev.php中给出

而且:

  

资源 ID#7

这两个错误都告诉您mysql_query返回资源。此时它不是一个字符串。您需要来处理该资源&amp;采取行动。试试这个。

$fothersq=("SELECT others FROM january");
$fothers=mysql_query($fothersq);
while ($row = mysql_fetch_assoc($fothers)) {
  echo sprintf('<input type="text" placeholder="0" name="febothers" size="11" value="%s">', (!empty($row['others'] ? htmlentities($row['others']) : '')));
}

另外,请注意我将<input type="text"> HTML元素放在echo中,因为您提供的代码与直接的PHP或HTML或两者混合都没有多大意义。

编辑:根据原始海报可能会被三元运算符混淆的评论,这里是我的答案的修改版本,它将实现相同的目标,但是以稍微简单的方式:

$fothersq=("SELECT others FROM january");
$result=mysql_query($fothersq);
while ($row = mysql_fetch_assoc($result)) {
  $fothers = '';
  if (!empty($row['others']) {
    $fothers = htmlentities($row['others']);
  }
  echo '<input type="text" placeholder="0" name="febothers" size="11" value="' . $fothers . '">';
}

答案 1 :(得分:1)

因为你运行了这个

$fothers=mysql_query($fothersq);

现在$fothers不会是字符串。它将是resource

但是你将$fothers传递给期望字符串的htmlentities()

答案 2 :(得分:1)

要纠正的要点:

  • htmlentities()函数将字符转换为HTML实体。因此,它需要一个字符串,在您的情况下,您的传递资源。

  • 您获取Resource id #7是因为您没有抓取任何内容。执行后,使用mysql_fetch_array获取行。

试试这个:

$fothersq=("SELECT others FROM january");
$fothers=mysql_query($fothersq);
while ($fetch = mysql_fetch_array($fothers)) {
?>
<input type="text"  name="febothers" size="11" value="<?php echo (isset($fetch[0])) ?  htmlentities("$fetch[0]") : ''?>">
<?php
}