PHP 和 MySQL - 无法使 INSERT INTO 正常工作

标签 php mysql insert

为了将其正确插入我的数据库,我已经尝试了一个多小时。即使查询与工作完全一样,我也无法弄清楚这一点。

页面上没有抛出任何错误,但它没有将数据插入数据库。

PHP 代码(变量正确发布到页面):

<?php
error_reporting(E_ALL);
//start session
session_start();

//include database connection
include('../db_connect.php');

//import info
$client = $_POST['client'];
$name = $_POST['name'];
$company = $_POST['company'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$address1 = $_POST['address1'];
$address2 = $_POST['address2'];
$address3 = $_POST['address3'];
$city = $_POST['city'];
$state = $_POST['state'];
$zip = $_POST['zip'];
$country = $_POST['country'];
$vehicle = $_POST['vehicle'];
$msrp = $_POST['msrp'];
$saleprice = $_POST['saleprice'];
$date = date("Y-m-d H:i:s");
$status = "Pending";
$notes = "Test notes are great!";


$sql = "INSERT INTO sales (salePrice, saleDate, saleStatus, saleNotes, saleName, saleCompany, salePhone, saleEmail, saleAddress1, saleAddress2, saleAddress3, saleCity, saleState, saleZipcode, saleCountry, clientFK) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

if ($stmt = $mysqli->prepare($sql)) {

/* Bind our params */
$stmt->bind_param('dssssssssssssssi', $saleprice , $date , $status , $notes , $name , $company , $phone , $email , $address1 , $address2 , $address3 , $city , $state , $zip , $country , $client);

/* Execute the prepared Statement */
$stmt->execute();

/* Echo results */
echo "Inserted user information into database.\n";

/* Close the statement */
$stmt->close();
}else{
    /* Error */
printf("Prepared Statement Error: %s\n", $mysqli->error);
}
?>

这是我数据库中该表的布局:

CREATE TABLE IF NOT EXISTS `sales` (
  `idsale` int(11) NOT NULL AUTO_INCREMENT,
  `salePrice` double NOT NULL,
  `saleDate` datetime NOT NULL,
  `saleStatus` varchar(50) NOT NULL,
  `saleNotes` varchar(100) DEFAULT NULL,
  `saleName` varchar(70) DEFAULT NULL,
  `saleCompany` varchar(50) DEFAULT NULL,
  `salePhone` varchar(20) DEFAULT NULL,
  `saleEmail` varchar(255) DEFAULT NULL,
  `saleAddress1` varchar(35) DEFAULT NULL,
  `saleAddress2` varchar(35) DEFAULT NULL,
  `saleAddress3` varchar(35) DEFAULT NULL,
  `saleCity` varchar(20) DEFAULT NULL,
  `saleState` varchar(50) DEFAULT NULL,
  `saleZipcode` varchar(15) DEFAULT NULL,
  `saleCountry` varchar(50) DEFAULT NULL,
  `createdBy` varchar(30) DEFAULT NULL,
  `createdDate` datetime DEFAULT NULL,
  `modifiedBy` varchar(30) DEFAULT NULL,
  `modifiedDate` datetime DEFAULT NULL,
  `clientFK` int(11) NOT NULL,
  PRIMARY KEY (`idsale`),
  KEY `clientFK_INDEX` (`clientFK`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

任何帮助将不胜感激!提前感谢您的帮助。

最佳答案

您的查询未正确绑定(bind)变量,因为您在查询中传递了 16 个占位符并在绑定(bind)函数中传递了 17 个值。

(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)  //16 values...

$stmt->bind_param('dssssssssssssssi', $saleprice , $date , $status , $notes , $name , $company , $phone , $email , $address1 , $address2 , $address3 , $city , $state , $zip , $country , $client); //17 variables

因此,您的查询会引发错误。在 php.ini 中启用错误以查看错误消息。

关于PHP 和 MySQL - 无法使 INSERT INTO 正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16138926/

相关文章:

php - Laravel 将数组值存储/插入到数据库 Mysql

php - 以数字开头的MySQL表列名在选择查询时产生错误

php - 如何从 php MySQL sql 注入(inject)易受攻击的查询到 MySQLi 不易受攻击的查询

java - 连接 MySQL 时通信链路失败

mysql - 如何使用sql向该表添加约束?

php - 缓存 mysql 插入 - 保持数据完整性

php - PHP二进制到十六进制,前导零

PHP MySQL 绑定(bind)变量问题 >1 条件

mysql - 这个 MySQL INSERT 查询有什么问题

php - 从一个表单插入到两个表中