0

データベースにレコードを挿入しようとしていますが、エラーが発生します。

PHPとMySQLを使用しています。

成功する結果が必要ですが、エラーが発生します。コードは次のとおりです。

 $Pname = $_POST[Pname];
    $P_Price = $_POST[P_Price];
    $P_Desc = $_POST[P_Desc];
    $P_City = $_POST[P_City];
    $P_Size = $_POST[P_Size];
    $P_Rooms = $_POST[P_Rooms];
    $P_garage = $_POST[P_garage];
    $P_Address = $_POST[P_Address];
    $P_Long = $_POST[P_Long];
    $P_Lat = $_POST[P_Lat];
    $Provinces_idProvinces = $_POST[Provinces_idProvinces];

    // array for JSON response
    $response = array();

        $result = mysql_query("INSERT INTO property(Pname,P_Price,P_Desc,P_City,P_Size,P_Rooms,P_garage,P_Address,P_Long,P_Lat,Provinces_idProvinces)
        VALUES ('".$Pname."',".$P_Price.",'".$P_Desc."','".$P_City."','".$P_Size."','".$P_Rooms."',".$P_garage.",'".$P_Address."',".$P_Long.",".$P_Lat.",".$Provinces_idProvinces."'");

     if ($result) {
            // successfully inserted into database
            $response["success"] = 1;
            $response["message"] = $result ;

            // echoing JSON response
            echo json_encode($response);
        } else {
            // failed to insert row
            $response["success"] = 0;
            $response["message"] = mysql_error();

これが私のエラーです:

{"success":0,"message":"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''','','','',,'',,,'' at line 2"}

すべてをチェックしましたが、それでも同じエラーが発生します。助けてください、もうほぼ3日です。

MySQLクエリは次のとおりです。

delimiter $$

CREATE TABLE `property` (
  `idProperty` int(11) NOT NULL AUTO_INCREMENT,
  `Pname` varchar(45) DEFAULT NULL,
  `P_Price` double DEFAULT NULL,
  `P_Desc` varchar(45) DEFAULT NULL,
  `P_City` varchar(45) DEFAULT NULL,
  `P_Size` varchar(45) DEFAULT NULL,
  `P_Rooms` varchar(45) DEFAULT NULL,
  `P_garage` int(11) DEFAULT NULL,
  `P_Address` varchar(45) DEFAULT NULL,
  `P_Long` int(11) DEFAULT NULL,
  `P_Lat` int(11) DEFAULT NULL,
  `P_Sold` tinyint(1) DEFAULT '0',
  `Provinces_idProvinces` int(11) NOT NULL,
  PRIMARY KEY (`idProperty`),
  KEY `fk_Property_Provinces` (`Provinces_idProvinces`),
  CONSTRAINT `fk_Property_Provinces` FOREIGN KEY (`Provinces_idProvinces`) REFERENCES `provinces` (`idProvinces`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1$$
4

1 に答える 1

4

クエリには多くの問題があります。

  1. $_GETユーザー入力(または)からの値をサニタイズしていません$_POST-少なくともmysql_real_escape_stringこれには使用してください...
  2. クエリに空の値が含まれているため,,,、クエリにあります...送信後にフォームを検証し、各プロパティに値が設定されていることを確認します。別の方法で''(空の文字列)または0(ゼロ)またはnull
  3. 考えずにアポストロフィと引用符を使用します...これがYoyrクエリです(太字にすることができるようにフォーマットされたコードではありません)-太字は間違っているアポストロフィです:INSERT INTOプロパティ(Pname、P_Price、P_Desc、P_City、P_Size、P_Rooms、 P_garage、P_Address、P_Long、P_Lat、Provinces_idProvinces)VALUES('"。$Pname。"'、"。$P_Price。"、'"。$P_Desc。"'、'"。$P_City。"'、'"。$ P_Size。"'、'"。$P_Rooms。"'、"。$P_garage。"、'"。$P_Address。"'、"。$P_Long。"、"。$P_Lat。"、"。$Provinces_idProvinces。" '");

これらの3つのエラー/間違いを修復した後、あなたは良いはずです。

いくつかの推奨事項:

  1. 各ユーザー入力を常にサニタイズしてください!(これはおそらく推奨ではありません)
  2. フォームを検証し、空のフィールドにデフォルト値を設定する必要があります
  3. 現在非推奨の関数を使用する代わりにmysql_*、少なくともmysqli_*PDOを使用してください。

さらに、引用符で囲まれていない配列インデックスを使用しています。

$P_Price = $_POST[P_Price];

定数でない限りP_Price、引用する必要があります。

$P_Price = $_POST['P_Price'];

エラーレポートをアクティブにして、発生しているすべてのエラーを確認し、それらを修正します。

error_reporting(E_ALL);
ini_set('display_errors', true);
于 2012-06-26T09:00:48.117 に答える