PHP和MySQL -不能让INSERT INTO正常工作


PHP & MySQL - Cannot get INSERT INTO to work correctly

我已经尝试了一个多小时的事情,让这个插入到我的数据库正确。我不能弄清楚我的生活,即使查询完全像工作一样好。

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

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 ;

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

您的查询没有正确绑定变量,因为您在查询中传递了16个占位符并在绑定函数中传递了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

因此你的查询抛出了一个错误。

现在看起来真的很愚蠢,但是它说:

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

它不工作,直到我把它改为:

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

这是最奇怪的事情。/会有很大的不同。谢谢大家的帮助。