2013-08-17 66 views
0
<?php 
$con=mysqli_connect("localhost","root","123456","astralms"); 

if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$username = htmlspecialchars(mysql_real_escape_string($_GET['username'])); 

$result = mysqli_query($con,"SELECT * FROM accounts WHERE name = '$username'"); 

while($row = mysqli_fetch_array($result)) 
    { 
    echo $row['gm']; 
    echo "<>"; 
    echo $row['vpoints']; 
    echo "<>"; 
    echo $row['ACash']; 
    } 
?> 

这是我的代码。所有的信息都是100%正确的。但是,即使我输入了密码,它的行为就像我没有。由于某种原因拒绝用户'@'localhost'(使用密码:NO)的访问?

这是为什么? 谢谢!

回答

3

你有mysqli连接,所以不是使用mysql_escape_string()和你要使用mysqli_real_escape_string()

你看到的错误是由于mysql_real_escape_string()试图建立自己的连接,因为没有使用旧API的连接处于活动状态。

编辑:mysqli_real_escape_string将连接数据库作为第一个参数,所以在你的情况下,你会这样称呼它;

mysqli_real_escape_string($con, $_GET['username']) 
+0

什么是我必须使用mysqli_real_escape_string的第二个参数?我在网上找到了答案,但是“链接”是什么? –

+1

@JohnReakon连接链接,你需要使用'$ con' –

3

您正在使用旧的电话,弃用mysql函数调用mysql_real_escape_string

两个扩展有不同的连接,不要混合它们。

调用转义函数需要活动连接,因为转义必须知道当前的编码设置。 mysql扩展没有连接,并打开一个来自php.ini的默认参数。幸运的是,它并没有与这些工作。

相关问题