Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

Jak změnit PDO obsah na Mysqli?

Sashaa
verified
rating uzivatele
(18 hodnocení)
31. 7. 2020 14:12:12
Zdravím, mám zde tento PHP kod:
//update.php
include('database_connection.php');
if(isset($_POST))
{
$old_name = get_old_image_name($connect, $_POST);
$file_array = explode(".", $old_name);
$file_extension = end($file_array);
$new_name = $_POST . '.' . $file_extension;
$query = '';
if($old_name != $new_name)
{
$old_path = '../../uploads/' . $old_name;
$new_path = '../../uploads/' . $new_name;
if(rename($old_path, $new_path))
{
$query = "
UPDATE soubory
SET image_name = '".$new_name."', image_description = '".$_POST."'
WHERE image_id = '".$_POST."'
";
}
}
else
{
$query = "
UPDATE soubory
SET image_description = '".$_POST."'
WHERE image_id = '".$_POST."'
";
}
$statement = $connect->prepare($query);
$statement->execute();
}
function get_old_image_name($connect, $image_id)
{
$query = "
SELECT image_name FROM soubory WHERE image_id = '".$image_id."'
";
$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
foreach($result as $row)
{
return $row;
}
}
?>
Aktuálně to funguje jako PDO, jak bych to mohl změnit, aby to fungovalo jako mysqli?
31. 7. 2020 14:12:12
https://webtrh.cz/diskuse/jak-zmenit-pdo-obsah-na-mysqli/#reply1459051
Pavel Janků
verified
rating uzivatele
(93 hodnocení)
31. 7. 2020 14:18:47
V database_connection.php máš nejspíše instancovaný objekt PDO do proměnné $connect, místo toho udělej
Potom ještě tě chci upozornit na to, že ikdyž máš "prepared" statements, nemáš je implementované správně. Kód je tedy náchylný na SQL injection. Správně místo proměnné se do kódu dá
a následně dosadíš proměnné metodou. Pak budeš mít ošetřenou alespoň tuto část.
31. 7. 2020 14:18:47
https://webtrh.cz/diskuse/jak-zmenit-pdo-obsah-na-mysqli/#reply1459050
Sashaa
verified
rating uzivatele
(18 hodnocení)
31. 7. 2020 14:22:39
Napsal Pavel Janků;1592381
V database_connection.php máš nejspíše instancovaný objekt PDO do proměnné $connect, místo toho udělej
Potom ještě tě chci upozornit na to, že ikdyž máš "prepared" statements, nemáš je implementované správně. Kód je tedy náchylný na SQL injection. Správně místo proměnné se do kódu dá
a následně dosadíš proměnné metodou. Pak budeš mít ošetřenou alespoň tuto část.
Databázi mám takto:
$conn = mysqli_connect($servername, $dBUsername, $dBPassword, $dBName);
$conn -> set_charset("utf8");
if (!$conn) {
die("Chyba při připojení s databázi MySql: ".mysqli_connect_error() );
}
ale to nekomunikuje s kodem výše... i když to $connect změním na $conn...
---------- Příspěvek doplněn 31.07.2020 v 14:27 ----------
Chyba bude asi tady:
$statement = $connect->prepare($query);
$statement->execute();
$result = $statement->fetchAll();
foreach($result as $row)
---------- Příspěvek doplněn 31.07.2020 v 14:31 ----------
Tak už jsem to vyřešil :) Kdyby to někdo potřeboval:
if(isset($_POST))
{
$old_name = get_old_image_name($conn, $_POST);
$file_array = explode(".", $old_name);
$file_extension = end($file_array);
$new_name = $_POST . '.' . $file_extension;
$sql = '';
if($old_name != $new_name)
{
$old_path = '../../uploads/' . $old_name;
$new_path = '../../uploads/' . $new_name;
if(rename($old_path, $new_path))
{
$sql = "
UPDATE soubory
SET image_name = '".$new_name."', image_description = '".$_POST."'
WHERE image_id = '".$_POST."'
";
}
}
else
{
$sql = "
UPDATE soubory
SET image_description = '".$_POST."'
WHERE image_id = '".$_POST."'
";
}
$result = $conn->query($sql);
}
function get_old_image_name($conn, $image_id)
{
$sql = "
SELECT image_name FROM soubory WHERE image_id = '".$image_id."'
";
$result = $conn->query($sql);
foreach($result as $row)
{
return $row;
}
}
?>
31. 7. 2020 14:22:39
https://webtrh.cz/diskuse/jak-zmenit-pdo-obsah-na-mysqli/#reply1459049
Pavel Janků
verified
rating uzivatele
(93 hodnocení)
31. 7. 2020 14:32:06
1) používej proměnnou $connect, když ji následně používáš na dotazy do dtb.
2) použij objektový zápis, aby ti to komunikovalo, tzn.
$connect = new Mysqli($servername, $dBUsername, $dBPassword, $dBName);
viz https://www.php.net/manual/en/class.mysqli.php
---------- Příspěvek doplněn 31.07.2020 v 15:33 ----------
Opravte si ty SQL dotazy, nebo se budete divit, až Vám někdo dropne DB :)
31. 7. 2020 14:32:06
https://webtrh.cz/diskuse/jak-zmenit-pdo-obsah-na-mysqli/#reply1459048
Pro odpověď se přihlašte.
Přihlásit