PHP插入表中不起作用

时间:2016-02-12 16:25:20

标签: php mysql pdo insert-into

我试图将项目插入表格但是虽然它显示了成功的消息但它仍然无效:/

这是我的代码&表

<?php 
    ini_set("log_errors", 1);
    ini_set("error_log", "error.log");
    error_log( "Hello, errors!" );

        $itemName = $_POST['itemName'];
        $itemDesc = $_POST['itemDesc'];
        $itemSlutID = $_POST['itemSlutID'];

            if (isset($_POST['addBtn'])){

                if (empty($itemName) || empty($itemDesc) || empty($itemSlutID)){
                    echo error('Please fill in all fields');

                }else{
                    $SQLinsert = $odb -> prepare("INSERT INTO `items` VALUES(NULL, :userID, :itemName, :itemDesc, :itemSlutID)");
                    $SQLinsert -> execute(array(':userID' => $_SESSION['ID'], ':itemName' => $itemName, ':itemDesc' => $itemDesc, ':itemSlutID' => $itemSlutID));
                    echo success('Item has been added, please wait up to 1 hour for us to approve the item.');
                }
            }
?>

CREATE TABLE `items` (
  `ID` int(11) NOT NULL,
  `userID` int(11) NOT NULL,
  `itemName` text NOT NULL,
  `itemDesc` text NOT NULL,
  `itemSlutID` text NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

2 个答案:

答案 0 :(得分:2)

发现问题:

$SQLinsert = $odb -> prepare("INSERT INTO `items` VALUES(NULL, :userID, :itemName, :itemDesc, :itemSlutID)");
                                                          ^--- ID field


CREATE TABLE `items` (
  `ID` int(11) NOT NULL,
                ^^^^^

因为你从不打扰检查查询是否真的成功,并且盲目地(并且错误地)输出错误的&#34;成功&#34;消息,你最终来到这里......

为什么要在您明确定义为&#34; not null&#34;?

的字段中插入空值

答案 1 :(得分:2)

1。 null

看看你的第一栏:

ID int(11)NOT NULL,

然而,您的第一个占位符值是NULL。更好的做法是将其更改为NULL AUTO_INCREMENT

2。无论发生什么事都说“成功”

语句执行后,你没有检查它是否成功 - 你只是回应一个声明。

变化:

$SQLinsert -> execute(array(':userID' => $_SESSION['ID'], ':itemName' => $itemName, ':itemDesc' => $itemDesc, ':itemSlutID' => $itemSlutID));
echo success('Item has been added, please wait up to 1 hour for us to approve the item.');

要:

if($SQLinsert -> execute(array(':userID' => $_SESSION['ID'], ':itemName' => $itemName, ':itemDesc' => $itemDesc, ':itemSlutID' => $itemSlutID))){
    echo success('Item has been added, please wait up to 1 hour for us to approve the item.');
} else {
    //There's been a problem!
    echo "ERROR: " . $SQLinsert->errorInfo();
}