简体   繁体   English

如何将简单的MySQL转换为pdo

[英]How do I convert a simple bit of MySQL to pdo

I know nothing about MySQL let alone PDO and am struggling to convert something to PDO. 我对MySQL更是一无所知,更不用说PDO了,并且正在努力将某些东西转换为PDO。

I have tried everything I can by copying code from other bits of the script but can't get anything to work and knowing absolutely nothing about MySQL let alone PDO does not help in fact MySQL seems a heck of a lot easier to say the least. 我已经尝试了一切操作,可以从脚本的其他位元复制代码,但是什么也做不了,而且对MySQL完全一无所知,更不用说PDO了,实际上MySQL似乎至少说起来容易得多。

I want is this very simple bit of MySQL to work as PDO. 我想将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'];

First you need to create new PDO() object. 首先,您需要创建new PDO()对象。 Something like this: 像这样:

$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);

Next your code will transform to: 接下来,您的代码将转换为:

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

But this is not a good practice to just write SQL manually, wrapping and escaping all params. 但是,仅手动编写SQL,包装和转义所有参数不是一个好习惯。 Better way using prepared statements, it'll wrap and escape all params automatically: 使用准备好的语句的更好方法是,它将自动包装和转义所有参数:

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

you should put . 你应该放。 after db prefix: 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'];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM