Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将mySQL转换为PDO_Php_Mysql_Pdo - Fatal编程技术网

Php 如何将mySQL转换为PDO

Php 如何将mySQL转换为PDO,php,mysql,pdo,Php,Mysql,Pdo,我有一个php脚本,用于使用mySQL将公告发布到数据库。我想把它改成使用PDO 我最初使用的代码如下: <?php require_once"connection.php"; session_start(); if(isset($_POST['annForm'])) { $userID=$_SESSION['sessionUser']; $idQuery=mysql_query("SELECT adminID FROM administrator WHERE usernam

我有一个php脚本,用于使用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行(完整性约束冲突):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;
}}
require_once“connection.php”;
会话_start();
如果(isset($_POST['annForm']))
{
$userID=$\会话['sessionUser'];
$idQuery=$conn->prepare(“从管理员中选择adminID,其中用户名='$userID'”);
$idQuery->execute();
$adminID=$idQuery->fetch();
$genAnnouncement=$_POST['annForm'];
如果(isset($GENANNOUNCE))
{
$sql=“插入到一般通知中(adminID、GenanNotification)
值(:adminID,:genAnnouncement)”;
$stmt=$conn->prepare($sql);
$stmt->execute(数组)(
“:adminID'=>$\u POST['$adminID[0]'”,
“:genAnnouncement'=>$_POST['annForm']);
echo“已成功添加公告。
”; 标题(“refresh:500;url=adminsHomepage.php”); 返回; }}
我想,您在这里遇到了问题:
$\u POST['$adminID[0]']

请尝试删除撇号。

我想您在这里遇到了问题:
$\u POST['$adminID[0]]]

请尝试删除撇号。

在原始MySQL查询中,您有:

$addGenAnnQuery = "
        INSERT INTO generalannouncement 
                    (adminID, genAnnouncement) 
             VALUES ('$adminID[0]','$genAnnouncement')
";
因此,如果旧的查询工作,那么新的
execute
必须是:

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

在原始的MySQL_uu查询中,您有:

$addGenAnnQuery = "
        INSERT INTO generalannouncement 
                    (adminID, genAnnouncement) 
             VALUES ('$adminID[0]','$genAnnouncement')
";
因此,如果旧的查询工作,那么新的
execute
必须是:

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

为什么您在原始代码中有
$adminID[0]
,但在新代码中用
$\u POST
->
$\u POST['$adminID[0]]]
包装它?它应该是
:adminID'=>$adminID[0],
而不带
$\u POST['
/
'.\Sean我有$adminID[0]因为这是当前登录用户的ID值,
$adminID[0]
是正确的。那么,为什么要在新代码中将其更改为
$\u POST['$adminID[0]]]
?没有意义。@Sean我不太清楚为什么我在新代码中将其更改为$\u POST
为什么您的原始代码中有
$adminID[0]
,但在新代码中用
$\u POST
->
$\u POST['$adminID[0]]
包装它?它应该是
:adminID'=>$adminID[0],
,而不带
$\u POST['
]@Sean我有$adminID[0],因为这是当前登录用户的ID值,
$adminID[0]
是正确的。那么,为什么要在新代码中将其更改为
$\u POST['$adminID[0]]]
?没有道理。@Sean我不太清楚为什么我在新代码中将它改为$\u POST谢谢。我已经删除了撇号,但现在它在同一行上写着“Undefined index:Adm101”,下面的一行中有一个错误,它说管理员id不能为空,完整性约束。这不仅仅是需要删除的撇号,而是整个
$\u POST['
/
']
包装的
$adminID[0]
。谢谢。我已经删除了撇号,但现在它在同一行上写着“Undefined index:Adm101”,下面的一行中出现了一个错误,它说管理员id不能为空,完整性约束它不仅仅是需要删除的撇号,而是整个
$\u POST['
/
']
包装的
$adminID[0]