Я пытаюсь переписать простой скрипт вставки и обновления с mysql_*
на PDO
. Я думаю, что я сделал это больше всего, но есть кое-что, что я не могу понять, как будет в PDO. Это источник mysql.Сценарий перезаписи из mysql_ * в PDO
if(!empty($_POST["image_id"])) {
require_once("dbcontroller.php");
$db_handle = new DBController();
$query = "INSERT INTO ipaddress_vote_map (ip_address,image_id,vote_rank) VALUES ('" . $_SERVER['REMOTE_ADDR'] . "','" . $_POST["image_id"] . "','" . $_POST["vote_rank"] . "')";
$result = $db_handle->insertQuery($query);
if(!empty($result)) {
$query = "SELECT SUM(vote_rank) as vote_rank FROM ipaddress_vote_map WHERE image_id = '" . $_POST["image_id"] . "' and ip_address = '" . $_SERVER['REMOTE_ADDR'] . "'";
$row = $db_handle->runQuery($query);
switch($_POST["vote_rank"]) {
case "1":
$update_query ="UPDATE images SET votes = votes+1 WHERE image_id='" . $_POST["image_id"] . "'";
break;
case "-1":
$update_query ="UPDATE images SET votes = votes-1 WHERE image_id='" . $_POST["image_id"] . "'";
break;
}
$result = $db_handle->updateQuery($update_query);
print $row[0]["vote_rank"];
}
}
И это моя попытка -> PDO
if(!empty($_POST["image_id"])) {
include 'misc/database.inc.php';
error_reporting(E_ALL^E_NOTICE);
ini_set('display_errors', 1);
$pdo = Database::connect();
$query = $pdo -> prepare("INSERT INTO ipaddress_vote_map (ip_address,image_id,vote_rank)
VALUES (:remote_address, :image_id, :vote_rank)");
$query -> execute(array(
"remote_address" => $_SERVER['REMOTE_ADDR'],
"image_id" => $_POST['image_id'],
"vote_rank" => $_SERVER['vote_rank']
));
if(!empty($query)) {
$query = $pdo -> prepare("SELECT SUM(vote_rank) as vote_rank FROM ipaddress_vote_map WHERE image_id = :image_id and ip_address = :remote_address");
$query -> execute(array(
"remote_address" => $_SERVER['REMOTE_ADDR'],
"image_id" => $_POST['image_id']
));
switch($_POST['vote_rank']){
case '1':
$update_query = $pdo -> prepare("UPDATE images SET votes = votes+1 WHERE image_id= :image_id");
$update_query -> execute(array(
'image_id' => $_POST['image_id']
));
break;
case '-1':
$update_query = $pdo -> prepare("UPDATE images SET votes = votes-1 WHERE image_id= :image_id");
$update_query -> execute(array(
'image_id' => $_POST['image_id']
));
break;
}
$result = $pdo->updateQuery($update_query);
print $row[0]["vote_rank"];
}
Database::disconnect();
}
То, что я не могу понять, как сделать это после того, как оператор INSERT мне нужно сделать что-то вроде этого
$result = $db_handle->insertQuery($query);
и как будет в PDO? Потому что я работаю с $query
- if(!empty($query)) {...
, и я не уверен, что это правильно. Также последняя часть
$result = $pdo->updateQuery($update_query);
print $row[0]["vote_rank"];
Как будет в PDO?
Правильно ли это часть PDO? Я имею в виду, переписываю ли это нормально?
Могу ли я предложить ORM, что-то упрощенное, чтобы вы начали, возможно [Idiorm] (https://idiorm.readthedocs.org/en/latest/). Это действительно сократит ошибки в генералах и развертывании кода. – Andrew
Благодарим вас за комментарий. Я также думаю о чем-то подобном, но сначала хочу понять некоторые простые сценарии и то, как все работает. На данный момент это кажется немного продвинутым для меня. – Jared