【问题标题】:Insert record failing! php mysqli插入记录失败! php mysqli
【发布时间】:2009-11-06 16:27:09
【问题描述】:

我有一个 mysql 数据库...

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;

}

?>

脚本正在从以前的表单中获取正确的值,但没有将它们插入到数据库中。任何想法的人? 提前谢谢, 亚伦。

【问题讨论】:

  • 运行此脚本时是否出现错误?如果有,是什么?
  • 测试$stmt->execute()是否成功;并发布您收到的任何错误消息。
  • 您是否打算让您的 CONSTRAINT 符号“applications_ibfk_2”与您的 KEY 索引名称相同?

标签: php mysqli


【解决方案1】:

您的插入查询当前的编写方式是,您正在尝试将 id 设置为 NULL,这是一个 NOT NULL 字段。

插入的结构最好是这样的:

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

这样,你就不用尝试改变 id,而是让 auto_increment 来做这件事。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 2014-05-21
    相关资源
    最近更新 更多