我使用了旧的mysql脚本并尝试将其转换为更安全的PDO格式。在我的旧脚本中,我运行了 SELECT字段FROM表语句,然后将其放入变量中 $ 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-Statement,您似乎无法像以前那样运行与easiliy相同的语句。我尝试将变量分配给我的查询正在选择的行产品,但我得到错误:
不能使用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的变量,如果产品=“sony”echo“message”; ?
我也尝试用这个替换语句但没有成功。
<?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";
}
?>
本手册对于将旧陈述转换为新陈述并不安全,所以我对此表示赞赏,谢谢。
答案 0 :(得分:3)
使用
$query->fetch(PDO::FETCH_ASSOC);
获得1行和
$query->fetchAll(PDO::FETCH_ASSOC);
获取所有行
你期待一行所以使用第一行。