【问题标题】:PHP insert into a table not working [closed]PHP插入表不起作用[关闭]
【发布时间】:2016-02-12 16:25:19
【问题描述】:

我正在尝试将项目插入到表格中,但它无法正常工作,尽管它正在显示一条成功的消息:/

这是我的代码和表格。

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

【问题讨论】:

  • 为什么不显示成功信息?您无条件地执行该回显,而无需检查您的数据库调用返回的内容。你的代码基本上是。 “我不在乎那个宇宙爆炸了,每个人都死了,我会假装什么都没发生”。
  • :itemSlutID 一定想知道这个网站是关于什么的。
  • error_log( "Hello, errors!" ); 是的,很可能。在php.net/manual/en/pdo.error-handling.php
  • 马克的意思是“无条件地” ;-)
  • @Fred-ii- 这是一个市场。 SlutID 代表 slut.io(电子商务服务)项目 ID。

标签: php mysql pdo insert-into


【解决方案1】:

1。 null

看看你的第一列:

IDint(11) 非空,

但您的第一个占位符值是 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();
}

【讨论】:

  • 谢谢,现在可以使用了。
  • @SevnDK 不用担心。如果有帮助,别忘了采纳答案!
【解决方案2】:

发现问题:

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


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

由于您从不费心检查查询是否真正成功,并且盲目(并且错误地)输出错误的“成功”消息,因此您最终到了这里...

为什么要在明确定义为“非空”的字段中插入空值?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多