gpt4 book ai didi

php - pdo 中的这些 mysql 函数相当于什么?

转载 作者:行者123 更新时间:2023-11-29 18:21:42 25 4
gpt4 key购买 nike

我有一个 php 脚本,其中包含许多连接到数据库的 mysql 函数,出于安全原因以防止 SQl 注入(inject),我想用 pdo 函数替换这些 mysql 函数。

$e = mysql_real_escape_string($l);

$query = "SELECT * FROM users";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result)

$query = "SELECT * FROM users WHERE (first_name='" . $f_name . "' AND last_name='" . $l_name . "') OR (email = '" . $email . "')";
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);

$insert = "INSERT INTO users(`email`, `first_name`, `last_name`, `created_at`, `modified_at`) VALUES ('{$email}', '{$f_name}', '{$l_name}','" . date('Y-m-d H:i:s') . "','" . date('Y-m-d H:i:s') . "');";

$update = "UPDATE users SET `is_user`=1 WHERE user_id=" . $user_id;

mysql_query($insert) or die(mysql_error());

mysql_query($update) or die(mysql_error());

最佳答案

这是一个干净的版本,您可以使用它来执行 PDO:

<?php
$cnx = new PDO('mysql:host=HOST;dbname=DATABASE','userid','passeword');
$cnx->query('SET NAMES utf8');
$cnx->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);

try{
$req = $cnx->prepare("SELECT * FROM users WHERE (first_name=:firstname AND last_name=:lastname) OR (email=:mail);");
$req-> bindValue(':firstname',$f_name);
$req-> bindValue(':lastname',$l_name);
$req-> bindValue(':mail',$email);
$req-> execute();

$data = $req->fetchAll(PDO::FETCH_COLUMN);

}
catch(PDOExeption $e){}
?>

根据您的需要,查看以下之间的区别:PDO::FETCH_FUNC/PDO::FETCH_COLUMN/PDO::FETCH_GROUP

fetchAll doc :
http://php.net/manual/fr/pdostatement.fetchall.php

您也可以将所有值绑定(bind)在一行中,请参阅 binValue 文档。

关于php - pdo 中的这些 mysql 函数相当于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46522608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com