У меня есть этот скрипт php для размещения объявлений в базе данных с использованием mySQL. Я бы хотел изменить его, чтобы использовать PDO.Как преобразовать mySQL в PDO
код у меня изначально здесь:
<?php
require_once"connection.php";
session_start();
if(isset($_POST['annForm']))
{
$userID=$_SESSION['sessionUser'];
$idQuery=mysql_query("SELECT adminID FROM administrator WHERE username='$userID'");
$adminID=mysql_fetch_array($idQuery);
$genAnnouncement=$_POST['annForm'];
$genAnnouncement=mysql_real_escape_string($genAnnouncement);
$addGenAnnQuery="INSERT INTO generalannouncement (adminID, genAnnouncement) VALUES('$adminID[0]','$genAnnouncement')";
$announcementAdded=mysql_query($addGenAnnQuery);
if(!$announcementAdded)
{
echo 'Could Not Add Announcement, Try Again Later.<br>';
echo mysql_error();
}
else
echo 'Announcement Added Successfully.<br>';
header("refresh:500;url=adminsHomepage.php");
return;
mysql_close($con);
}
?>
Я изменил код, чтобы использовать PDO, но я получаю ошибки в настоящее время на линии 24 с неопределенным индексом $ adminID [0] и линии 25 с Integrity ограничением нарушение: 1048 Столбец «adminID» не может быть нулевым. Модифицированный код выглядит следующим образом:
require_once"connection.php";
session_start();
if(isset($_POST['annForm']))
{
$userID=$_SESSION['sessionUser'];
$idQuery= $conn->prepare("SELECT adminID FROM administrator WHERE username='$userID'");
$idQuery->execute();
$adminID= $idQuery->fetch();
$genAnnouncement=$_POST['annForm'];
if (isset($genAnnouncement))
{
$sql = "INSERT INTO generalannouncement (adminID, genAnnouncement)
VALUES (:adminID, :genAnnouncement)";
$stmt = $conn->prepare($sql);
$stmt->execute(array(
':adminID' => $_POST['$adminID[0]'],
':genAnnouncement' => $_POST['annForm']));
echo 'Announcement Added Successfully.<br>';
header("refresh:500; url= adminsHomepage.php");
return;
}}
Почему вы должны '$ adminID [0]' в исходном коде, но затем оберните его в '$ _POST' ->' $ _POST ['$ adminID [0]'] 'в новом коде? – Sean
Это должно быть просто ': adminID '=> $ adminID [0],' без '$ _POST [''/'']' – Sean
@Sean У меня был $ adminID [0], потому что это была идентификация идентификатора текущий пользователь, зарегистрированный в – user3531869