嗯,我做了我的研究,我就是想不出来。长话短说,我用的是这样的东西:
顺便说一句,“(websiteinfo)”只是用来探测我的网站/数据库信息。
$SQL = new PDO('mysql:dbname=(WebsiteInfo);host=(WebsiteInfo);charset=utf8', '(WebsiteInfo)', '(WebsiteInfo)');
$SQL -> setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$SQL -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
现在,这只是刚刚开始数据库连接。顺便说一句,我在这个网站上发现的大部分只是一个复制/粘贴代码,这也是为了防止mysql注入。实际上是从这个链接How can I prevent SQL injection in PHP?。如果有什么问题的话,我不会介意的建议或提示。只要这是有意义的,因为我刚开始使用数据库,可能甚至一周前,所以一切对我来说都是新的。现在是这样:
$Exicu = $SQL -> prepare("SELECT `tags` FROM `users` WHERE `user_id` = :a ") -> execute(array( ':a' => 16));
$Exicu
就在那里,因为我一直在尝试从查询中获取结果(如果我说得对的话)。另外16是用户id,但这经常会改变,所以这就是为什么16不只是在prepare语句中抛出的原因。我试过很多东西,但都没用。它要么不起作用,要么导致php崩溃。但不管怎样,我已经尝试过的是
$Exicu
,$Exicu->rowCount()
,一个带有$Exicu->bindParam
,$row = $Exicu->fetch()
的while循环,一个带有$SQL->query($Exicu)->fetchAll();
,foreach
,($Exicu->fetch(PDO::FETCH_ASSOC) as $row)
,$Exicu->get_result()
的echo PDO::query($Exicu);
循环,还有就是echo mysql_result($Exicu)
。是的,我知道,看起来很邋遢。但这些似乎都不起作用,只显示特定用户数据库中的
echo $Exicu
。所以我需要帮助。当我使用类似这样的tags
时没有问题,但是它没有mysql注入的保护。 最佳答案
我的pdo查询如下:
$user_id = 16;
$query = $SQL->prepare('SELECT tags FROM users WHERE user_id = :uid');
$query->bindValue(':uid', $user_id, PDO::PARAM_INT);
$query->execute();
while ($row = $query->fetch(PDO::FETCH_ASSOC))
{
echo $row['tags'];
}
这将从数据库中选择数据,安全地绑定其中的值,然后我们回显结果。
循环需要遍历从查询返回的每个结果。您可以跳过循环部分并创建类似于
while
语句的变量,并将$row
作为数组与您的结果一起使用。