在PHP MySQL中出现多个htmlspecialchars字符串

3

我在MySQL中有一张表,其中有一行数据如下:

  • id = 187
  • friendly name = 我不喜欢芥末
  • filetype = exe

下面的代码块可以完美地工作,并将文本我不喜欢芥末回显到HTML表单中。同样地,如果我将$row['friendlyname']更改为$row['filetype'],则会回显文本exe。到目前为止都很好,没有问题。

<?php
$con = mysqli_connect('domain','user','pass','db');
$sql = "select * from installers where id=187";
$result = mysqli_query($con,$sql);

while($row=mysqli_fetch_array($result))
$friendlyname = htmlspecialchars(" ".$row['friendlyname']." ",ENT_QUOTES);

$con->close();
?>

<input type='text' value='<?php echo $friendlyname; ?>'>

我遇到的问题是如果同时使用$row ['friendlyname']$row ['filetype']进行输出,那么只有排在第一位的变量会被输出。例如,在下面的代码中,$row ['friendlyname']$row ['filetype']之前被列出。在这个例子中,只有$row['friendlyname']我不喜欢芥末)将被输出。同样地,如果$row ['filetype']$row ['friendlyname']之前被列出,则只有$row ['filetype']exe)被输出,而第二个HTML输入表格为空。

<?php
$con = mysqli_connect('domain','user','pass','db');
$sql = "select * from installers where id=187";
$result = mysqli_query($con,$sql);

while($row=mysqli_fetch_array($result))
$friendlyname = htmlspecialchars(" ".$row['friendlyname']." ",ENT_QUOTES);
$filetype= htmlspecialchars(" ".$row['filetype']." ",ENT_QUOTES);

$con->close();
?>

<input type='text' value='<?php echo $friendlyname; ?>'>
<input type='text' value='<?php echo $filetype; ?>'>



注意1:输入类型表单的顺序并不重要。我排除了这个问题。
注意2:如果我用我想要输出的文本替换$row['friendlyname']$row['filetype'],那么它就可以工作(以下代码)。所以,这肯定是与这些$row变量有关的问题。

<?php
$con = mysqli_connect('domain','user','pass','db');
$sql = "select * from installers where id=187";
$result = mysqli_query($con,$sql);

while($row=mysqli_fetch_array($result))
$friendlyname = i don't like mustard;
$filetype= exe;

$con->close();
?>

<input type='text' value='<?php echo $friendlyname; ?>'>
<input type='text' value='<?php echo $filetype; ?>'>
1个回答

4

您没有将括号添加到while循环中,因此只有第一条记录被填充。

此代码块:

while($row=mysqli_fetch_array($result))
$friendlyname = htmlspecialchars(" ".$row['friendlyname']." ",ENT_QUOTES);
$filetype= htmlspecialchars(" ".$row['filetype']." ",ENT_QUOTES);

Should be:

while($row=mysqli_fetch_array($result)){
   $friendlyname = htmlspecialchars(" ".$row['friendlyname']." ",ENT_QUOTES);
   $filetype= htmlspecialchars(" ".$row['filetype']." ",ENT_QUOTES);
}

谢谢!谢谢!谢谢!问题已解决。很抱歉,我还是个新手,所以我的声望不够高,无法将您的回答标记为有用。一旦我的声望足够高,我会回来并将其标记为有用。再次感谢! - JeremyCanfield
@JeremyCanfield,我们中的一些人已经点赞了,但在16分钟内您可以接受答案,这将使Emmanuel从您那里获得基于声望的感谢。 - James
1
非常感谢你,詹姆斯!我真的很感激被欢迎进入社区。我一定会在16分钟内接受艾曼纽尔的回答(还有其他一些回答!)。 - JeremyCanfield

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接