PHP检索数据库值
到目前为止,我已经有了这个PHP检索数据库值,php,database,Php,Database,到目前为止,我已经有了这个 if(isset($_POST['Decrypt'])) { $dbinary = strtoupper($_POST['user2']); $sqlvalue = "SELECT `value` FROM `license` WHERE `binary` = '$dbinary'"; $dvalue = mysql_query($sqlvalue) or die(mysql_error()); } 我有一个字段,用户在其中输入一个加密的二进
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,而不是显示值。您的引用没有问题。事实上,到目前为止,一切看起来都是对的 问题是,现在$dvalue只是SQL数据库的一个资源。您必须再多取一行内容:
$dvalue = mysql_fetch_array($dvalue);
将来,您可能希望开始使用PDO或MySQLi而不是mysql函数,因为从5.5.0开始,这些函数就不推荐使用了。PDO和MySQLi的优点是它们提供了来自SQL注入的安全性,即当用户通过输入x'之类的内容来运行自己的SQL代码时;删除表成员--代码>阅读此页:。基本上,$dvalue是一个结果集id,您需要在另一个步骤中从数据库中实际提取数组。此外,mysql_*函数也不推荐使用。查找并改用mysqli_*函数
while($row = mysqli_fetch_array($dvalue))
{
echo $row['value'];
echo "<br>";
}
while($row=mysqli\u fetch\u数组($dvalue))
{
echo$row['value'];
回声“
”;
}
不要再使用mysql\u
函数。他们是。使用或代替
也就是说,您只是在运行查询,而没有检索任何结果。您必须调用一个函数,如从mysqli\u query
将返回的资源ID获取数据
我的建议是回到教程和文档中,然后使用这些其他扩展之一重试。祝您好运。…之后您将拥有一个数组,因此请确保访问您需要的列作为数组键$dvalue['value']
,否则,您将获得数组
作为输出。好吧,迈克尔,您是对的,“数组”确实出现了。然而,当我像你说的那样输入$dvalue['value']
时,我在第31oh行的/home/u923860750/public_html/cpanel/cpanel.php中得到了这个错误解析错误:语法错误,意外的'}',等等,那是因为我没有放一个;排队后。但是当我把分号放进去时,它再次显示Array
你不能直接向用户回显数组。要显示数组的内容以供测试,请使用var\u dump($dvalue)代码>。否则,您必须回显数组的单个项,即,echo$dvalue['binary']代码>。请链接到官方PHP文档,而不是w3schools,后者被广泛认为质量非常低(充满SQL注入漏洞等),这很容易受到SQL注入的攻击。强烈建议从现在不推荐使用的mysql_*()
API切换到更现代的API,如支持参数化查询的PDO。我计划很快这样做,但目前我只在个人事务中使用它,而且它在我的个人服务器上。除了我,任何人都无法访问它,也没有人知道它。