【发布时间】:2013-02-13 21:48:58
【问题描述】:
嗯,我做了我的研究,但我似乎无法弄清楚这一点。长话短说,我正在使用这样的东西:
顺便说一句,“(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 不只是被扔在准备语句中的原因。我尝试了很多东西,但都没有奏效。它要么不起作用,要么导致 PHP 崩溃。
但无论如何,我已经为$Exicu 尝试过的事情是$Exicu->rowCount()、$Exicu->bindParam、带有$row = $Exicu->fetch()、$SQL->query($Exicu)->fetchAll(); 的while 循环、带有($Exicu->fetch(PDO::FETCH_ASSOC) as $row)、$Exicu->get_result()、@ 的foreach 循环987654333@、echo mysql_result($Exicu) 和 echo $Exicu。是的,我知道,这看起来很草率。
但这些似乎都不能只显示特定用户数据库中的tags。所以这几乎就是我需要帮助的地方。当我使用 echo mysql_result( mysql_query("SELECT (etc,etc)") ) 这样的东西时没有问题,但它没有防止 MySQL 注入的保护。
【问题讨论】: