【发布时间】:2018-01-25 22:48:13
【问题描述】:
我有这个执行查询的 PHP 代码。
$sql = "SELECT ACCOUNTNUM as AccountNumber, NAME AS CompanyName
FROM VENDORTABLE";
$stmt = sqlsrv_query( $conn, $sql );
if( $stmt === false) {
die( print_r( sqlsrv_errors(), true) );
}
然后我使用查询结果来填充数据列表:
<form method="POST">
<label for="A">Number/Name:</label><br>
<input list="A" name="name">
<datalist id="A">
<?php
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) { ?>
<option value='<?php echo $row[0].",".$row[1] ?>'><?php
}
?>
</datalist><br><br>
<input type="submit" value="Continue"">
</form>
问题是某些结果包含 HTML 不喜欢的字符(即 ' 和 "),并且当循环将它们放入数据列表时,这些结果会被切断(例如,“Mike's”变成“Mike”) .
我怎样才能使放入数据列表的内容包括整个结果和数据中存在的任何引号?
我试过这样做:
<?php
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) ) { ?>
<option value='<?php echo $row[0].",".htmlspecialchars($row[1]) ?>'><?php
}
?>
同样使用addslashes()而不是htmlspecialchars(),前者只是在第一次出现引号时添加一个斜杠,但之后仍会切断所有内容
【问题讨论】:
标签: php html sql-server