【问题标题】:select sql row using pdo with where statement使用带有 where 语句的 pdo 选择 sql 行
【发布时间】:2018-07-09 08:17:04
【问题描述】:

这是我第一次尝试 PDO 并且还在学习它。我比较熟悉在开发php系统时使用mysql或mysqli。

经过深度搜索和搜索,我似乎仍然无法理解如何使用 PDO 进行查询

在我的代码中,我在 index.php 中调用的函数中使用了 mysqli

function getUsery(){
    $ip = getIPAddress();
    $query = mysqli_query("select userID from tblUsers where logged='1'  AND ip='$ip'");
    $row = mysqli_fetch_array($query);  
    $emp = $row['userID'];
    $logged = $row['logged'];
    $userlvl = $row['userLevel'];
    $_SESSION['logged'] = $logged;
    $_SESSION['userLevel'] = $userlvl;
    return $emp;
}

我真的不知道如何使用带有“where”语句的 PDO 来选择 sql 查询。我发现的大部分内容是使用没有“where”语句的数组

如何选择logged等于'1'且ip等于计算机的ip地址的userID并将结果返回并显示到index.php

【问题讨论】:

  • 哎哟! SQL注入有人吗?
  • 你知道如何在PDO中声明数据库连接吗?
  • @david 是的,刚刚通过网络搜索学习(自学)我已经使用 PDO 声明了数据库连接
  • 看看这里,这可能是使用 PDO 的最佳教程,其中有很多示例(如 where):phpdelusions.net/pdo
  • @Loek 谢谢会读这个。希望我能理解这一点

标签: php sql mysqli pdo


【解决方案1】:

假设你知道如何使用 PDO 连接数据库,这里是如何使用 PDO 选择 SQL。

$stmt = $db->prepare("select userID from tblUsers where logged = '1' AND ip = :ip");
$stmt->execute(array('ip' => $ip));
$listArray = $stmt->fetchAll();

注意SELECT 末尾的:ip。如果不使用?作为参数,则前缀:是必须的,后面的单词应该和execute函数中的key相同。

编辑

如果上述代码在函数内部,而$db在函数外部,则将$db声明为函数内部的全局变量。

【讨论】:

  • 谢谢。你知道我是否可以在函数中使用它吗?
  • 是的,当然。如果您的数据库连接设置在函数之外,您可以通过在函数中将其声明为全局来使用具有 PDO 连接的变量。
【解决方案2】:

这是 imo 关于 PDO 及其使用方法的最佳指南之一: https://phpdelusions.net/pdo WHERE 是查询的一部分,PDO 中的查询与纯 *sql 查询没有太大区别,只是在执行时进行了一些过滤。仔细阅读指南,您将能够执行您需要的任何查询。

【讨论】:

    【解决方案3】:

    PDO中有带WHERE的SQL语句

    $sql = "SELECT * FROM Users 
    WHERE userID = ?";
    $result = $pdo->prepare($sql);
    $result->execute([$id]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-04
      相关资源
      最近更新 更多