请不要发送给我一个引用mysql_real_escape_string的php.net链接作为唯一的回复。我已经通读了整个页面,虽然我理解了一般概念,但基于我的INSERT语句当前是如何构建的,我遇到了一些问题。
今天,我将使用以下内容:
$sql = "INSERT INTO tablename VALUES ('',
'$_SESSION['Member1FirstName'],
'$_SESSION['Member1LastName'],
'$_SESSION['Member1ID'],
'$_SESSION['Member2FirstName'],
'$_SESSION['Member2LastName'],
'$_SESSION['Member2ID'] ....)
对于输入了一些其他值的20+成员,该列表将继续。似乎示例中的大多数人已经将他们的所有数据存储在一个数组中。
在我的网站上,我接受表单输入,action="“设置为self,php验证发生,如果验证通过,数据将存储到第2页上的会话变量中,然后重定向到流程中的下一页(第3页)(整个流程中大约8-10页)。
发布于 2010-05-24 23:03:33
您似乎已经知道应该使用mysql_real_escape_string
,但我猜您不知道如何使用。您需要将它应用于插入到SQL中的每个用户提供的字符串。下面的示例应该会阐明这一点:
$sql = "INSERT INTO tablename VALUES ('', '" .
mysql_real_escape_string($_SESSION['Member1FirstName']) . "', '" .
mysql_real_escape_string($_SESSION['Member1LastName']) . "', '" .
etc..
或者查看prepared statements和绑定参数,以获得更简单(更快)的解决方案。
发布于 2010-05-24 23:05:35
1)您缺少右单引号,并且在单引号内没有替换var。
2)答案是mysql_real_escape_string,但可以用sprintf尝试一下:
$sql = sprintf("INSERT INTO tablename VALUES ('', '%s', '%s', '%d' )",
mysql_real_escape_string( $_SESSION['Member1FirstName']),
mysql_real_escape_string( $_SESSION['Member1LastName']),
$_SESSION['Member1ID']); // %d forced it as a digit
http://us2.php.net/manual/en/function.sprintf.php
发布于 2010-05-24 23:03:10
为什么不能使用mysql_real_escape_string?
您还可以使用regexp来仅允许名称中应该包含的某些字符
https://stackoverflow.com/questions/2897878
复制相似问题