Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在一个变量内连接条件和$POST变量有困难_Php - Fatal编程技术网

Php 在一个变量内连接条件和$POST变量有困难

Php 在一个变量内连接条件和$POST变量有困难,php,Php,我想添加这行代码 <?php echo(isset($_POST['AgentID'])&&($_POST['AgentID']=='')?' selected="selected"':'');?> 里面 $agentData.='<option value="'.$row['AgentID'].'">'.$row['AgentID'].' - '.$row['AgentName'].'</option>'; 我遇到困难,因为和“”,因为$

我想添加这行代码

<?php echo(isset($_POST['AgentID'])&&($_POST['AgentID']=='')?' selected="selected"':'');?>
里面

$agentData.='<option value="'.$row['AgentID'].'">'.$row['AgentID'].' - '.$row['AgentName'].'</option>';
我遇到困难,因为和“”,因为$\u POST变量也有“”

整个守则是:

<select name="AgentID" id="agentIDSentakushi">
      <option value="" <?php echo(isset($_POST['AgentID'])&&($_POST['AgentID']=='')?' selected="selected"':'');?>>--</option>
      <?php
                   $setsu = dbSetsuzoku();
                   $sql = 'SELECT AgentID,AgentName FROM agentdb ORDER BY AgentID';
                   $agentData='';
                   $result = $setsu->query($sql);
                    while ($row = $result->fetch(PDO::FETCH_ASSOC))
                     {
                        $agentData.='<option value="'.$row['AgentID'].'">'.$row['AgentID'].' - '.$row['AgentName'].'</option>';
                     }
                    echo $agentData;
                    $setsu = null;
                  ?>
    </select>
要简化它,请执行以下操作:

while ($row = $result->fetch(PDO::FETCH_ASSOC))
{
  $selected = (isset($_POST['AgentID']) && $_POST['AgentID']==$row['AgentID'])?'selected="selected"':'';
  $agentData.='<option value="'.$row['AgentID'].'"'.$selected.'>'.$row['AgentID'].' - '.$row['AgentName'].'</option>';
}
$selected此处是一个变量,用于检查是否设置了$\u POST['AgentID'],以及它是否等于$\u POST['AgentID'],如果条件为真,则将选择该选项。

我将继续使用vsprintf,如下所示:

$setsu = dbSetsuzoku();
$sql = "
    SELECT
        AgentID,
        AgentID AS AgentID_2, -- notice how I duplicated it here
        AgentName
    FROM agentdb
    ORDER BY AgentID
";
$agentData = '';
$result = $setsu->query($sql);
while ($row = $result->fetch(PDO::FETCH_ASSOC))
{
    $selected = (isset($_POST['AgentID']) && $_POST['AgentID'] == $row['AgentID']) ? ' selected' : '';
    $agentData .= vsprintf("<option value='%d'$selected>%d - %s</option>", $row);
}
echo $agentData;
$setsu = null;

这里的技巧是选择稍后将在SQL查询中以相同的顺序和数量打印的参数,因为您将直接将返回的数组传递给vsprintf,并且从SQL查询返回的数组需要与vsprintf占位符的顺序相同。为您节省了大量令人困惑的文字:

问题到底出在哪里?我不明白如何将条件连接到变量上。