任何人都可以提供帮助。我正在尝试使用mysql_real_escape_string支持传递给PHP的内部消息传递服务的值,但我必须在某处获取语法错误,因为这些值没有插入到数据库中。我一直在寻找教程,帮助等,但努力做到正确。
我正在使用的代码如下。正确输入未转义的值($ email,$ from,$ time),但其他值只是输入为空白。
<?php
session_start();
$conn = mysqli_connect('localhost', 'username', 'password', 'dbname');
$email=$_SESSION['email'];
$to = $_POST ['touser'];
$toemail = $_POST['touseremail'];
$from = $_SESSION['name'];
$message = $_POST['message'];
$subject = $_POST['subject'];
$time = time();
$query ="INSERT INTO messages
(to_user, to_email, subject, message, from_user, from_email, daterecord)
VALUES (
'" . mysql_real_escape_string($conn, $to) . "',
'" . mysql_real_escape_string($conn, $toemail) . "',
'" . mysql_real_escape_string($conn, $subject) . "',
'" . mysql_real_escape_string($conn, $message) . "',
'$from', '$email', '$time')";
$send = $conn -> query($query);
echo "Message sent!";
?>
答案 0 :(得分:5)
查看函数mysqli_real_escape_string()
我还应该注意,目前转义字符串的首选方法是parameter binding
答案 1 :(得分:1)
您使用mysql_real_escape_string
代替mysqli_real_escape_string
修复它,它会更好用!
答案 2 :(得分:0)
使用函数 mysqli_real_escape_string()而不是
Doc:http://www.php.net/manual/en/mysqli.real-escape-string.php
答案 3 :(得分:0)
您遇到的实际问题是,您在mysql
扩展程序和mysqli
扩展程序之间混淆。
如果您使用的是mysqli_connect()
,那么您使用的所有数据库函数都必须以mysqli_
开头。
当你真正想要的功能是mysql_real_escape_string
时,你正在使用mysqli_real_escape_string
。
i
非常重要。
但是,如果您允许我超越所描述的实际问题,我建议您远离转义查询,而是使用参数化查询。
参数化查询是一种允许您指定如下查询的技术:
SELECT fieldname from talbe WHERE arg = ? AND arg2 = ?
然后使用mysqli_bind_param()
将这些?
替换为您的变量。
这种技术被认为是比使用转义字符串更好的技术。
希望有所帮助。