1

これをデータベースに正しく挿入するために、1時間以上試してみました。クエリはまったく同じように機能しますが、私の人生ではこれを理解することはできません。

ページにエラーはスローされていませんが、データベースにデータが挿入されていません。

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 ;

どんな助けでも大歓迎です!事前にご協力いただきありがとうございます。

4

2 に答える 2

1

クエリで 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

このため、クエリはエラーをスローしています。エラー メッセージを表示するには、php.ini でエラーを有効にします。

于 2013-04-22T03:36:27.013 に答える
0

これは今では本当にばかげているように見えますが、次のように述べています。

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

次のように変更するまで機能しませんでした:

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

../ がどのようにすべての違いを生むことができるかは、最も奇妙なことです。ご協力ありがとうございました。

于 2013-04-23T08:23:01.607 に答える