2013-08-31 71 views
0

所以我有此到目前为止..PHP检索数据库值

if(isset($_POST['Decrypt'])) 
{ 
    $dbinary = strtoupper($_POST['user2']); 
    $sqlvalue = "SELECT `value` FROM `license` WHERE `binary` = '$dbinary'"; 
    $dvalue = mysql_query($sqlvalue) or die(mysql_error()); 
} 

我有用户在其中输入该被加密的二进制代码的字段。 (加密部分工作)。这应该从数据库中检索值。当我这样做,而不是显示的值,它说“资源ID#11”。

+0

这很容易被SQL注入。强烈建议从现在不推荐使用的'mysql _ *()'API切换到更加现代的,比如支持参数化查询的PDO。 [本教程将帮助你开始](http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers) –

+0

我打算尽快这样做,但暂时我只将它用于个人事务,并且它在我的个人服务器上。除了我以外,任何人都无法访问,也没有人知道。 –

回答

2

您的报价没有任何问题。事实上,一切看起来都是正确的。

事情是,现在$ dvalue只是SQL数据库的资源。你有一个更多的线来获取内容:

$dvalue = mysql_fetch_array($dvalue); 

在未来,你可能要开始使用PDO或库MySQLi而不是MySQL的功能,因为这些被弃用的5.5.0。 PDO和MySQLi的优势在于它们提供了SQL注入的安全性,当用户通过输入诸如x'; DROP TABLE members; --之类的东西来运行他们自己的SQL代码时。

+1

...之后您将拥有一个数组,因此请务必以数组键'$ dvalue ['value']'的形式访问需要的列,否则,您将获得'Array'作为输出。 –

+0

好吧,迈克尔你是对的,“阵列”出现了。然而,当我进入'$ dvalue ['value']'就像你说的,我得到这个错误 解析错误:语法错误,意外的'}'在/ home/u923860750/public_html/cpanel/cpanel.php在31行 –

+0

哦等,那是因为我没有放一个;在线后。但是,当我把分号,再次显示'数组'' –

-1

阅读本页:W3 Schools page on MySQL select useage。基本上$ dvalue是一个结果集ID,你需要在另一个步骤中实际将数据从数据库中提取出来。另外,mysql_ *函数已被弃用。查找并使用mysqli_ *函数。

while($row = mysqli_fetch_array($dvalue)) 
{ 
    echo $row['value']; 
    echo "<br>"; 
} 
+0

请链接到官方的PHP文档,而不是w3schools,它被广泛认为是质量非常低(充满SQL注入攻击等) –

0

不要再使用mysql_函数了。他们是deprecated。改为使用PDOMySQLi

这就是说,你只运行查询,而不是检索任何结果。您必须调用mysqli_fetch_array之类的函数才能从mysqli_query将返回的资源ID中获取数据。

我的建议是回到教程和文档,并用其中一个扩展名重试。祝你好运。