简体   繁体   English

如何将mySQL转换为PDO

[英]How to Convert mySQL to PDO

I have this php script for posting announcements to a database using mySQL. 我有这个php脚本,用于使用mySQL将公告发布到数据库。 I'd like to change it to use PDO. 我想将其更改为使用PDO。

The code I have originally is here: 我原来的代码在这里:

<?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);  
}   
?>

I have modified the code to use PDO but I am getting errors now on line 24 with undefined index $adminID[0] and line 25 with Integrity constraint violation: 1048 Column 'adminID' cannot be null. 我已经修改了使用PDO的代码,但现在在第24行出现错误,索引未定义$ adminID [0],在第25行出现违反完整性约束的情况:1048列'adminID'不能为null。 The modified code is as follows: 修改后的代码如下:

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;
}}

In your original MySQL_ query you have: 在原始的MySQL_查询中,您具有:

$addGenAnnQuery = "
        INSERT INTO generalannouncement 
                    (adminID, genAnnouncement) 
             VALUES ('$adminID[0]','$genAnnouncement')
";

So, if your old query work, new execute must be this: 因此,如果您的旧查询工作,新的execute必须是这样的:

$stmt->execute(array(
    ':adminID' => $adminID[0],
    ':genAnnouncement' => $genAnnouncement));

我认为,您在这里遇到问题: $_POST['$adminID[0]']只需尝试删除撇号。

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

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