【问题标题】:How do I convert a simple bit of MySQL to pdo如何将一些简单的 MySQL 转换为 pdo
【发布时间】:2015-12-06 15:27:03
【问题描述】:

我对 MySQL 一无所知,更不用说 PDO,并且正在努力将某些东西转换为 PDO。

我已经尝试了所有可以通过从脚本的其他位复制代码的方法,但无法使任何工作,并且对 MySQL 完全一无所知,更不用说 PDO 无济于事,事实上 MySQL 似乎更容易说最少。

我希望这个非常简单的 MySQL 可以作为 PDO 工作。

$query = " UPDATE " . $DBPrefix . "settings SET
logo = '" . $_FILES['logo']['name'] . "' ";
$system->check_mysql(mysql_query($query), $query, __LINE__, __FILE__);
$system->SETTINGS['logo'] = $_FILES['logo']['name'];

【问题讨论】:

    标签: mysql sql pdo


    【解决方案1】:

    首先你需要创建new PDO() 对象。像这样的:

    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    $opt = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
    ];
    $pdo = new PDO($dsn, $user, $pass, $opt);
    

    接下来您的代码将转换为:

    $sql = "UPDATE {$DBPrefix}settings SET logo = '{$_FILES['logo']['name']}'";
    $result = $pdo->query($sql);
    

    但这不是一个好习惯,只是手动编写 SQL,包装和转义所有参数。使用准备好的语句更好的方法,它会自动包装和转义所有参数:

    $ps = $pdo->prepare("UPDATE {$DBPrefix}settings SET logo = :logo");
    $ps->execute(['logo' => $_FILES['logo']['name']]);
    

    【讨论】:

      【解决方案2】:

      你应该把 . db前缀后:

      $query = " UPDATE " . $DBPrefix . ".settings SET
      logo = '" . $_FILES['logo']['name'] . "' ";
      $system->check_mysql(mysql_query($query), $query, __LINE__, __FILE__);
      $system->SETTINGS['logo'] = $_FILES['logo']['name'];
      

      【讨论】:

      • 对不起,我不明白你的意思我正在尝试将该代码转换为 PDO
      • 你没有在 db 前缀后添加点," . $DBPrefix . ".settings,是 database.settings
      • 它已经可以工作了,因为它作为 MySql 完美无瑕我希望它是 PDO 而不是 MySql
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-31
      相关资源
      最近更新 更多