PHP会话仅显示变量的一部分


PHP session only displaying part of variable

我遇到一个问题,当我在会话数组中保存变量时,它只存储第一个单词。也就是说,如果是"一号公司",它只会拯救"公司"。变量来自选择列表:

function listCompany() {
    include 'includes/connection.php';
    $stmt = $conn->prepare("SELECT CompanyName FROM Portal.company ORDER BY CompanyName ASC");
    $stmt->execute();
    $stmt->bind_result($col1);
    ?>
    <select name="CompanyName">
    <?
    $blank = "";
    echo "<option value=" . $blank . ">  </option>";
    while ($stmt->fetch()) {
        echo "<option value=" . $col1 . ">" . $col1 . "</option>";
    }
    ?>
    </select>
<?
}

然后存储在会话中:

$_SESSION['NewOrder'] = $array2 = array(
    "CompanyName" => $_POST['CompanyName'], 

当我回显变量时,我只得到第一个单词。你知道我做错了什么吗?

您缺少值周围的引号。应该是

echo "<option value='"$blank'">  </option>";
while ($stmt->fetch()) {
    echo "<option value='"$col1'">$col1</option>";
}

在您的代码中,HTML输出将是

<option value=Company one>Company one</option>
              ^-----^ <-- this part is taken as value the rest 
                          after space is invalid HTML so gets ignored

应该是

<option value="Company one">Company one</option>

问题是因为这一行,

echo "<option value=" . $col1 . ">" . $col1 . "</option>";

你没有用单引号引用你的value。应该是

echo "<option value='" . $col1 . "'>" . $col1 . "</option>";