好吧,我确实做了研究,但似乎无法弄清楚。长话短说,我正在使用这样的东西:
顺便说一句,“(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);
Run Code Online (Sandbox Code Playgroud)
现在,这只是当前仅用于启动数据库连接。哪个btw主要只是我在此网站上发现的复制/粘贴代码,也是为了防止MySQL注入。实际上从此链接如何防止PHP中的SQL注入?。如果有什么问题,我不会介意建议或提示。只要这是有道理的,因为我大概一个星期前才开始使用数据库,所以一切对我来说都是新的。现在是这样的:
$Exicu = $SQL -> prepare("SELECT `tags` FROM `users` WHERE `user_id` = :a ") -> execute(array( ':a' => 16));
Run Code Online (Sandbox Code Playgroud)
$Exicu就在那儿,因为我一直在尝试从查询中获取结果(如果我说的没错)。另外,16是用户ID,但是它会经常更改,因此这就是为什么16不只是在prepare语句中扔的原因。我已经尝试了很多东西,但是都没有用。它要么不起作用,要么使PHP崩溃。
但无论如何,事情我已经尝试过的$Exicu就是$Exicu->rowCount(),$Exicu->bindParam,while循环使用$row = $Exicu->fetch(),$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特定用户的数据库。因此,这几乎是我需要帮助的。当我使用类似的东西echo mysql_result( mysql_query("SELECT (etc,etc)") )但没有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'];
}
Run Code Online (Sandbox Code Playgroud)
这将从数据库中选择数据,安全地绑定其中的值,然后我们回显结果。
需要循环来遍历查询返回的每个结果。您可以跳过循环部分,并在while语句中创建一个变量,然后将其$row用作结果数组。