我有一个选项菜单,我想在从表中读取记录的选择时显示选中。表中的项目有连字符(例如沃尔沃- 3638,丰田- 92131)。问题是我正在使用strcmp来回应所选择的存储值。虽然它将值存储在表中,但当我创建选项菜单以从先前存储的值更改选项菜单选择时,我无法回显选中的值。我已经试过了,但无济于事。我猜是连字符。有一个解决方案,我可以保持连字符和回声选择?下面是我的选项菜单:
<input type="text" name="Activity" class="form-control" id="Activity" value="<?php echo htmlentities($row_Recordset1['Activity'], ENT_COMPAT, 'utf-8'); ?>" required <?php
if($row_RecordsetTrans['SUM(`transaction`.quantity)'] >0){
echo 'readonly';
}
?>>
</div>
<div class="form-group">
<label for="Account">Account*</label>
<select class="form-control" name="Account" id="Account" required <?php
if($row_RecordsetTrans['SUM(`transaction`.quantity)'] >0){
echo 'readonly';
}else{
echo 'text';
}
?>>
<option value="" <?php if (!(strcmp("", $row_Recordset1['Account']))) {echo "selected='"selected'"";} ?>>select account</option>
<?php
do {
?>
<option value="<?php echo $row_Accounts['acctname']?>"<?php if (!(strcmp($row_Accounts['acctname'], $row_Recordset1['Account']))) {echo "selected='"selected'"";} ?>><?php echo $row_Accounts['acctname']?></option>
<?php
} while ($row_Accounts = mysql_fetch_assoc($Accounts));
$rows = mysql_num_rows($Accounts);
if($rows > 0) {
mysql_data_seek($Accounts, 0);
$row_Accounts = mysql_fetch_assoc($Accounts);
}
?>
</select>
证明我上面的代码是正确的。问题出在我导入的数据上。我用的是:
$sqlstatement="LOAD DATA LOCAL inffile '$temp' INTO TABLE accounts字段以',行以''r'结尾忽略1行
结果是,加载的数据在acctname字段中出现了换行符。因此,strcmp将无法比较数据。
修复方法是在"Terminated by"后面加上'n,以删除换行符:
$sqlstatement="LOAD DATA LOCAL INFILE '$temp' INTO TABLE accounts FIELDS TERMINATED BY ',' LINES TERMINATED BY ''r'n' IGNORE 1 LINES