0

任何人都可以帮忙。我试图在传递给 PHP 的值上使用 mysql_real_escape_string 来支持我的安全性,以用于内部消息传递服务,但我一定是在某处出现语法错误,因为这些值没有被插入到数据库中。我四处寻找教程,帮助等,但努力做到正确。

我正在使用的代码如下。未转义的值($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!";

?>
4

4 回答 4

5

查看函数mysqli_real_escape_string()

我还应该注意,这些天转义字符串的首选方法是参数绑定

于 2013-03-27T15:38:57.527 回答
1

您正在使用mysql_real_escape_string而不是mysqli_real_escape_string.
修复它,它会更好地工作!

于 2013-03-27T15:39:11.540 回答
0

改用函数mysqli_real_escape_string()

文档:http ://www.php.net/manual/en/mysqli.real-escape-string.php

于 2013-03-27T15:40:24.793 回答
0

您遇到的实际问题是您在mysql扩展程序和mysqli扩展程序之间混淆了。

如果您正在使用mysqli_connect(),那么您使用的所有 DB 函数都必须开始mysqli_

当您mysql_real_escape_string真正想要的功能是mysqli_real_escape_string.

i是非常重要的。

但是,如果您允许我超越所描述的实际问题,我建议您不要使用转义查询,而是使用参数化查询。

参数化查询是一种允许您指定如下查询的技术:

SELECT fieldname from talbe WHERE arg = ? AND arg2 = ?

然后?用你的变量替换那些 s mysqli_bind_param()

这种技术被认为是比使用转义字符串更好的技术。

希望有帮助。

于 2013-03-27T15:43:58.013 回答