如何将简单的MySQL转换为pdo

时间:2015-12-06 15:27:04

标签: mysql sql pdo

我对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'];

2 个答案:

答案 0 :(得分:0)

首先,您需要创建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']]);

答案 1 :(得分:-1)

你应该放。在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'];