2017-07-15 14 views
-1

MySQLデータベースにデータを送信するためのフォームを作成しようとしていますが、動作していません。現時点では、私のINSERTクエリに次のエラーがあります:PHPを使用してMySQLデータベースにフォームデータを送信

PHP構文チェック:構文エラー、予期しない ''(T_ENCAPSED_AND_WHITESPACE)、識別子(T_STRING)または変数(T_VARIABLE)または数値(T_NUM_STRING)を予期していません現時点では、あなたのコード

私は、次のPHPを持って

<?php 

$mysqli = new mysqli("localhost", "root", "", "etrading"); 

/* check connection */ 
if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
    } 

//Query 
    $query = "INSERT INTO item (Name, Description, img_path, Quantity, Category, Location, Sale_Type, Price, Duration, Payment) VALUES 
($_POST['name'], $_POST['description'], $_POST['photo'], $_POST['quantity'], $_POST['category'], $_POST['location'], $_POST['Sale_Type'], $_POST['price'], $_POST['duration'], $_POST['payment'])"; 

    $result = mysql_query($query); 
    if($result){ 
     echo("<br>Input data is succeed"); 
} else{ 
    echo("<br>Input data is fail"); 
} 

    /* close connection */ 
    $mysqli->close(); 

?> 

これは私が私のフォームのために持っているものは現在あります。私はまだ画像をアップロードするためのコードを書いています。私は現在、イメージのアップロードを試みる前にエラーなしで動作するようにフォームを取得しようとしています。

<form id="sellitem" action="sellitem.php" method="POST" onsubmit="return checkForm(this);" > 
     <fieldset> 
      <h4>Sell Your Item</h4> 
      <p><label class="title" for="name">Name:</label> 
      <input type="text" placeholder="Enter item name" name="name" id="name" title="Please enter item name" ><br /> 

      <label class="title" for="text">Description:</label> 
      <textarea name="description" rows="5" cols="33" type="text" placeholder="Please describe your item" id="description" title="Please describe your item" ></textarea><br /> 

      <label class="title" for="category">Category:</label> 
      <select name="category" id="category" > 
       <option value="clothes">Clothes</option> 
       <option value="books">Books</option> 
       <option value="electronics">Electronics</option> 
       <option value="sport">Sport</option> 
      </select></p> 

      <label class="title" for="location">Location:</label> 
      <input type="text" placeholder="Item Location" name="location" id="location" title="Enter item location" ><br /> 

      <label class="title" for="name">Sale Type:</label> 
      <select name="Sale_Type" id="Sale_Type" > 
       <option value="Auction">Auction</option> 
       <option value="BuyNow">Buy Now</option> 
      </select> 

      <label class="title" for="price">Price: $</label> 
      <input type="text" placeholder="00.00" name="price" id="name" title="Please enter your name" ><br /> 

      <label class="title" for="name">Quantity:</label> 
      <input type="text" placeholder="Number of items" name="quantity" id="name" title="Number of items" ><br /> 

      <label class="title" for="name">Duration:</label> 
      <input type="text" placeholder="End date" name="duration" id="duration" title="End Date" ><br /> 

      <label class="title" for="name">Payment Type:</label> 
      <select name="payment" id="payment" > 
       <option value="PayPal">PayPal</option> 
       <option value="Bank Deposit">Bank Deposit</option> 
       <option value="Card">Credit Card</option> 
      </select><br> 
      Select image to upload: 
      <input type="file" name="img_path" id="img_path" > 


      <div class="submit"><input type="submit" value="Submit" /></div> 
      <div class="reset"><input type="reset" value="Reset" /></div> 

      </fieldset> 

      </form> 

このエラーが表示される理由については、何か助けてください。また、MySQLデータベースへの簡単なアップロード写真を作成するのに役立つリンク/サイトも役立ちます。

+0

です。 '$ result = mysql_query($ query);'。それを '$ result = mysqli_query($ mysqli、$ query);に変更してください。 – urfusion

+1

また、一般的な発言:あなたのコードはSQLインジェクション攻撃には全面的にオープンです。これを防ぐために、「prepared statement」と「parameter binding」の組み合わせを使用することのセキュリティ上の利点についてお読みください。 – arkascha

+0

そして、 'echo'文は関数ではなく、言語構造体です。
入力データが成功しました "; ' – arkascha

答えて

-1

で実行する必要があり、mysqliのオブジェクトを使用している: それは、クエリを実行しません。 。ここ は、私はあなたが `mysqli`の代わりに、` mysql`を使用していると思うソリューション

<?php 
    $servername = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "yourdb"; 

    // Create connection 
    $conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "INSERT INTO table_name (name) VALUES 
     ('".$_POST["name"]."')"; 

    if ($conn->query($sql) === TRUE) { 
    echo "New record created successfully"; 
    } else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 

?>

here

+0

詳細を教えてもらえますか?コードのみの回答は悪い回答とみなされます... – arkascha

+0

ありがとう。次回はコード –

+0

で丁寧に答えていますが、確かに、なぜこのような質問に説明的な言葉を追加してみませんか? – arkascha

0

あなたはそのためのクエリは、コードだけでMySQLのクエリを含む文字列変数を宣言し

$result=$mysqli->query($query); 

Php doc

関連する問題