我有一个HTML/PHP表单,它使用JAVA SCRIPT函数将输入内容发送(POST)到PHP代码,PHP代码执行查询并返回到JAVA SCRIPT函数,其中包含数据以自动填充表单中的其他输入。
当我发送的输入内容是纯文本时,It all 的效果很好,即使它的内容中只有一个引号也是如此。
但是,一旦双引号包含在输入内容中,它就无法返回自动填充结果。
感谢您的帮助,指出我在传递引号时哪里失败了。谢谢
英特尔英特尔只是为了更清楚起见,如果客户名称是“
时,代码就会失败
下面是从发送和接收数据的PHP SCRIPT函数:
!--Script Auto fill ltd by customer -->
<script type="text/javascript">
function updatefrm() {
setTimeout(function(){
var customer = $('#customer').val();
if ($.trim(customer) !='') {
$.post('customerfill.php', {customer: customer}, function(data) {
$('#customerupdate').val(data['customer']);
$('#ltdupdate').val(data['ltd']);
});
}
}, 10);
}
</script>
下面是获取POST数据、执行查询并传回数组以供脚本自动填充的JAVA代码:
<?php
if (!empty($_POST['customer'])) {
$DB_Server = "localhost"; // MySQL Server
$DB_Username = "XXXX"; // MySQL Username
$DB_Password = "XXXX"; // MySQL Password
$DB_DBName = "XXXXXXXX"; // MySQL Database Name
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Failed to connect to MySQL:<br />" . mysql_error() . "<br />" . mysql_errno());
// Select database
$Db = @mysql_select_db($DB_DBName, $Connect) or die("Failed to select database:<br />" . mysql_error(). "<br />" . mysql_errno());
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER SET utf8');
$safe_name = mysql_real_escape_string(trim($_POST['customer']));
$query = mysql_query(" SELECT * FROM customers WHERE customer = '". $safe_name ."' LIMIT 1 ");
if (mysql_num_rows($query) > 0) {
$row = mysql_fetch_assoc($query);
json($row);
} else {
json(null);
}
}
function json ($array) {
header("Content-Type: application/json");
echo json_encode($array);
}
发布于 2018-10-14 20:27:14
我认为你的js代码是好的,我认为你的php代码和那一行有错误。
$query = mysql_query(" SELECT * FROM customers WHERE customer = '". $safe_name ."' LIMIT 1 ");
因此,出于安全性考虑,您应该使用PDO预准备语句,而不是面临双引号问题
$dsn = "mysql:host=localhost;dbname=your_database;charset=utf8mb4";
try {
$pdo = new PDO($dsn, "database_username", "database_password");
} catch (Exception $e) {
echo "no connection";
exit();
}
$stmt = $pdo->prepare("SELECT * FROM customers WHERE customer = :customer LIMIT 1");
$stmt->execute(array(":customer"=>$safe_name));
$row = $stmt->fetch();
https://stackoverflow.com/questions/52802001
复制相似问题