PHP 插入 table 无效
PHP insert into a table not working
我正在尝试将项目插入 table,但它没有工作,尽管它显示了一条成功消息:/
这是我的代码 & table。
<?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;
发现问题:
$SQLinsert = $odb -> prepare("INSERT INTO `items` VALUES(NULL, :userID, :itemName, :itemDesc, :itemSlutID)");
^--- ID field
CREATE TABLE `items` (
`ID` int(11) NOT NULL,
^^^^^
由于您从来没有费心去检查查询是否确实成功,并且盲目地(并且错误地)输出了错误的 "success" 消息,所以您最终来到这里...
为什么要在明确定义为 "not null" 的字段中插入空值?
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();
}
我正在尝试将项目插入 table,但它没有工作,尽管它显示了一条成功消息:/
这是我的代码 & table。
<?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;
发现问题:
$SQLinsert = $odb -> prepare("INSERT INTO `items` VALUES(NULL, :userID, :itemName, :itemDesc, :itemSlutID)");
^--- ID field
CREATE TABLE `items` (
`ID` int(11) NOT NULL,
^^^^^
由于您从来没有费心去检查查询是否确实成功,并且盲目地(并且错误地)输出了错误的 "success" 消息,所以您最终来到这里...
为什么要在明确定义为 "not null" 的字段中插入空值?
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();
}