我使用以下代码将我的移动应用程序中的事件日志和用户信息插入到mysql数据库中。
我发现"
字符在稍后使用我从数据库中提取的JSON数组时会遇到问题。我想要做的是在发布到数据库之前完全删除php代码中的"
字符。
通过移动应用程序中的Javascript删除"
字符实际上不是一种选择。
<?php
$servername = "localhost";
$username = "Fred";
$password = "Barney";
$dbname = "BamBam";
// Create connection
$conn = new mysqli ($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// escape variables for security
$event_log = mysqli_real_escape_string($conn, $_POST['event_log']);
$logged_by = mysqli_real_escape_string($conn, $_POST['logged_by']);
$sql = "INSERT INTO time_event (event_log, logged_by)
VALUES ('$event_log', '$logged_by')";
if ($conn->query($sql) === TRUE) {
echo "Data entered successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
答案 0 :(得分:2)
使用mysqli_prepare
和mysqli_stmt_bind_param
执行参数化查询。我强烈建议这种做法。
如果你真的想要转义特殊字符进行手动插值
在查询字符串中,使用mysqli_real_escape_string
。
手动推出解决方案会带来真正的风险 错过重要的事情,让你的程序变得脆弱 SQL injection攻击。
答案 1 :(得分:0)
我没试过,但这应该做
$sql = sprintf("INSERT INTO time_event (event_log, logged_by)
VALUES ('%s' ,'%s'",$event_log,$logged_by);