2009-11-06 105 views
1

我有一個MySQL數據庫...插入記錄失敗! PHP的mysqli

CREATE TABLE `applications` (
`id` int(11) NOT NULL auto_increment, 
`jobref` int(11) NOT NULL, 
`userid` int(11) NOT NULL, 
`q1` text NOT NULL, 
`q2` text NOT NULL, 
`q3` text NOT NULL, 
`sub_q1` text, 
`sub_q2` text, 
`sub_q3` text, 
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, 
`printed` int(11) NOT NULL default '0', 
PRIMARY KEY (`id`), 
KEY `jobref` (`jobref`), 
KEY `applications_ibfk_2` (`userid`), 
CONSTRAINT `applications_ibfk_1` FOREIGN KEY (`jobref`) REFERENCES `jobs` (`id`) ON  DELETE NO ACTION ON UPDATE NO ACTION, 
CONSTRAINT `applications_ibfk_2` FOREIGN KEY (`userid`) REFERENCES `users` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='InnoDB free: 9216 kB; (`jobref`) REFER `iwcjobs/jobs`(`id`) ' 

這個PHP文件,使用mysqli的數據操作。

<?php 

require_once '../includes/constants.php'; 

if(isset($_POST['submit'])) { 
$q1 = $_POST['question1']; 
$q1a = $_POST['ifNoQuestion1']; 
$q2 = $_POST['question2']; 
$q2a = $_POST['ifNoQuestion2']; 
$q3 = $_POST['question3']; 
$q3a = $_POST['ifNoQuestion3']; 
$JobRef = $_POST['jobref']; 
$UserRef = $_POST['id']; 

$mysql = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or die('There was a problem connecting to the database'); 

if($stmt = $mysql->prepare('INSERT INTO `applications` VALUES (NULL,?,?,?,?,?,?,?,?,NULL,NULL)')) { 
    $stmt->bind_param('iissssss',$JobRef,$UserRef,$q1,$q2,$q3,$q1a,$q2a,$q3a); 
    $stmt->execute(); 
    $stmt->close(); 

    header('location: ../myApps.php?apr=y'); 
    //echo ("<h2>success</h2> - $q1 . $q2 . $q3 . $q1a . $q2a . $q3a . $JobRef . $UserRef"); 

} else { 
    echo 'error: ' . $mysql->error; 
} 

} else { 

echo 'errorStage2: ' . $mysql->error; 

} 

?> 

該腳本從前面的表單中獲取正確的值,但沒有將它們插入到數據庫中。任何想法的人? Thx提前, 亞倫。

+0

運行此腳本時是否出現錯誤?如果是這樣,那是什麼? – GSto 2009-11-06 16:30:18

+0

測試$ stmt-> execute()的成功;併發布您收到的任何錯誤消息。 – 2009-11-06 16:31:35

+0

您是否打算將您的CONSTRAINT符號'applications_ibfk_2'與您的KEY索引名稱相同? – 2009-11-06 17:05:21

回答

1

您的插入查詢當前寫入的方式,您嘗試將ID設置爲NULL,這是一個NOT NULL字段。

它會是更好的結構插入會是這樣:

INSERT INTO 'applications' (jobref,userid,etc..) VALUES (?,?etc..) 

這樣,你不嘗試改變ID,只是讓AUTO_INCREMENT做的事情。