PHP mySQL变量不匹配和空间问题

时间:2014-08-13 21:50:08

标签: javascript php html mysql

我有一个选项值下拉菜单和一个设置下拉菜单的开关。我从mySQL服务器中提取值并尝试将值与交换机中的值匹配以设置下拉值。

echo $attribute;
$attributeArray =  array("","Hello World");
$attribute2Array =  array("","Hello World");
switch ((string)$attribute) {
case "$attribute2Array[1]":
    $attributeArray[1] = "selected";
    break;
}
echo "
<br>Attribute:<form method=post action=attributeEdit.php>
<select name=attribute>
<option value=$attribute2Array[0] $attributeArray[0]>$attribute2Array[0]</option>
<option value=$attribute2Array[1] $attributeArray[1]>$attribute2Array[1]</option>
</select></br> 
 ";

回声说与开关至少在chrome web浏览器中完全相同。所以我试图用“Hello&amp; nb sp; World”(在nb sp中没有空格)替换“Hello World”中的空格,但我似乎无法使其工作。我已经尝试过cast的替换和print_r等。我尝试了一个if boolean比较,它返回false。我的方法有效,除了包含空格的值。

2 个答案:

答案 0 :(得分:0)

该空格打破了“值”,因为它不是引号中包含的字符串

您正在生成HTML:

<option value=hello world selected>hello world</option>

浏览器如何知道“世界”与“你好”一致?

<option value="hello world" selected>hello world</option>

请注意,这里的颜色格式与浏览器的方式大致相同,“hello”为蓝色,之后的任何内容都与“value”无关。而第二个例子,整个值是蓝色的。

从技术上讲,在HTML中,只允许整数值没有引号。现在,每天都会为任何HTML属性的所有值设置引号。

P.S。编写多行块的一种更简洁的方法,允许您确保PHP不被解释为字符串:

echo <<<EOT
    <html attribute="{$phpvariable}">
EOT;

http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

编辑:您已将另一个损坏的版本发布为“答案”,请接受此答案并删除您的答案,因为它遇到了同样的错误,但您只是隐藏了问题。你现在工作的唯一原因是因为你好世界是一个单词。

答案 1 :(得分:-2)

echo $attribute;
$attributeArray =  array("","Hello World");
$attribute2Array =  array("","Hello World");
$attribute3Array =  array("","Hello-World");
switch ((string)$attribute) {
case "$attribute2Array[1]":
    $attributeArray[1] = "selected";
    break;
}
echo "
<br>Attribute:<form method=post action=attributeEdit.php>
<select name=attribute>
<option value=$attribute2Array[0] $attributeArray[0]>$attribute3Array[0]</option>
<option value=$attribute2Array[1] $attributeArray[1]>$attribute3Array[1]</option>
</select></br> 
 ";

相反,我只是创建了一个新数组并用“ - ”替换它,而不是空格在网页上显示空格形式。虚线值保存在mySQL中。不管怎样,谢谢