设置echo';ing到html值字段中


Weird PHP echo behaviour when setting echo'ing into a html value field

让我们直接进入问题。

我有一个DB条目,它是列名称1中的一个字符串,看起来像这样:COMPANYNAME DIVADAY

这个字符串的主要特性是,它主要是由两个或多个用逗号分隔的单词组合而成的字符串。

现在,当我像这样打印这些条目时:

echo ("<td><input id='"firmenname1'" type='"text'" value=".$row['firmenname1']." /></td>");

现在我在浏览器中查看结果,并体验到一些有趣的输出。输入值设置为字符串中的第一个单词。因此,本例中的值看起来像COMPANYNAME。当我检查元素以检查它是否在太空中丢失时,我看到的是:

<input type="text" value="COMPANYNAME" DIVADAY />

不知怎的,值gets属性在每个逗号之后或之前都被关闭,因此用户看不到整个名称。

Uppon在检查数据库中的字符串时,我真的看不出是否有任何隐藏的字符导致了这个问题。

以这种方式尝试回声

echo "<td><input id='firmenname1'  type='text' value=".$row['firmenname1']." /></td>";
value属性缺少引号。
echo ("<td><input id='"firmenname1'" type='"text'" value='"{$row['firmenname1']}'" /></td>");

您也可以尝试将addslashes添加到该值中。

$firmenname1 = addslashes($row['firmenname1'])
echo ("<td><input id='"firmenname1'" type='"text'" value='"{$firmenname1}'" /></td>");

您忘记在类型数据库输出周围加引号:你应该写:

echo ("<td><input id='"firmenname1'" type='"text'" value='"".$row['firmenname1']."'" /></td>");

按照它的编写方式,html代码变成了:并且浏览器将COMPANYNAME解析为输入元素的值并且将divaday解析为输入元件的单独属性。如果你在"COMPANYNAME DIVADAY"周围加上引号,你应该会看到正确的结果。

尝试在value属性周围添加引号:

echo ("<td><input id='"firmenname1'" type='"text'" value='"".$row['firmenname1']."'" /></td>");

为了避免混淆,我通常将要使用的数组项转换为变量,即$firmenname1=$row['firmenname1'];这样,您就可以在使用前对数据进行清理和格式化。额外的好处是,您不必担心正确的引号和反斜杠