我使用了旧的 mysql 脚本并尝试将其转换为更安全的 PDO 格式。在我的旧脚本中,我运行了一个SELECT field FROM table语句,然后将其放入变量 $Product = $row['product']; 并运行 IF 和 ELSE 语句。如果用户产品 = 索尼我想回应“你可能也对这些感兴趣”这是我下面的示例代码
<?php
$connect = mysql_connect("host","username","password");
mysql_select_db("dbname");
$username = $_SESSION['username'];
$q = "SELECT product FROM users WHERE username = ('$username')";
$r = mysql_query($q);
$row = mysql_fetch_assoc($r);
$Product = $row['product'];
if($Product == "sony")
{
echo "You may be interested in these as well";
}
?>
现在使用 PDO 语句,您似乎无法像以前那样轻松运行相同类型的语句。我尝试将变量分配给我的查询从中选择的行产品,但出现错误:
不能将 PDOStatement 类型的对象用作数组
这是我的代码
<?php
session_start();
$db = new PDO('mysql:host=host;dbname=dbname;charset=UTF-8', 'username', 'password');
$username = $_SESSION['username'];
$getProduct = $db->query("SELECT product FROM users WHERE username = '$username'");
$getProduct->execute();
$Product = $getProduct['product'];
if($Product == "sony")
{
echo "You may be interested in these as well";
}
?>
如何将我选择的表中的“产品”字段传递给带有 PDO 的变量,并且如果产品 =“索尼”回显“消息”; ?
我也尝试用这个替换语句,但没有成功。
<?php
$query = $db->query("SELECT product FROM users WHERE username = '$username'");
$query->execute();
$Product = $query ->fetchAll(PDO::FETCH_ASSOC);
$Product = $getProduct['product'];
if($Product == "sony")
{
echo "You may be interested in these as well";
}
?>
该手册在将旧语句转换为更新和安全的语句方面不是很友好,所以我很感激这方面的任何指导,谢谢。