2012-07-16 43 views
1

有人可以解释为什么这个简单的表格不起作用吗?mysql真正的转义字符串什么也没有返回

问题是,当我使用mysql_real_escape_string()结果是什么都没有,当我把它删除它完美的作品可以请你看看这里有什么错?

这是完全简单的代码,

<?php 

// Loop the post fields 
$postFields = array('username', 'password', 'checkSubmission'); 
$postArray = array(); 
foreach($postFields as $postVal){ 
    $postArray[$postVal] = mysql_real_escape_string($_POST[$postVal]); 
} 
print_r($postArray); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Signin</title> 
<head> 
</head> 
<body><? echo $error;?> 
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post" id="signinForm"> 
    Username: <input type="text" name="username" value="" /> 
    Password: <input type="password" name="password" value="" /> 
    <input type="hidden" name="checkSubmission" value="1" /> 
    <input type="submit" name="Submit" value="Signin" /> 
</form> 
</body> 
</html> 

编辑:

print_r()是空的,当我使用mysql_real_escape_string()

Array ([username] => [password] => [checkSubmission] =>) 

这是print_r()没有mysql_real_escape_string()

Array ([username] => thre[password] => werr[checkSubmission] => 1) 

谢谢你的帮助

+2

你能放的回报 “的print_r($ postArray);” ? – 2012-07-16 13:58:22

+0

我更新了这个问题,请看看 – itsme 2012-07-16 14:03:10

+3

你连接到你的数据库了吗? mysql_real_escape_string只适用于你先连接数据库的情况。 – 2012-07-16 14:04:48

回答

7

mysql_real_escape_string()需要一个活动的数据库连接。

从PHP手册:

一个MySQL连接使用mysql_real_escape_string() 否则产生水平E_WARNING的错误之前需要,和FALSE是 返回。如果未定义link_identifier,则使用最后一个MySQL连接 。

http://php.net/manual/en/function.mysql-real-escape-string.php

+0

我使用的是PDO,但这是我的答案题 :) – itsme 2012-07-16 14:12:48