2016-04-27 5 views
0

に更新されません。エラーメッセージは表示されませんが、テーブルはデータベース内で更新されていません。のデータは、私が情報を入力するユーザーのためのフォームを設定して、SQLテーブルに挿入することについては、しようとしていますSQL

My form page is this: 

<!DOCTYPE html> 
<html> 
<head> 
    <title>Input 2</title> 
</head> 
<body> 
<h1>Add a user</h1> 

    <form action="input-followup2.php" method="post"> 
     First Name: 
      <br/> 
       <input type="text" name="firstName"> 
      <br/> 
     <br> 
     Last Name: 
      <br/> 
      <input type="text" name="lastName"> 
     <br/> 
     <br> 
     Email Address: 
      <br/> 
      <input type="text" name="emailAddress"> 
     <br/> 
     <br> 
     Monthy Food Budget: 
      <br/> 
      <input type="number" step="0.01" name="foodBudget"> 
      <br/> 
     <br> 
     Monthly Utility Budget: 
     <br/> 
      <input type="number" step="0.01" name="utilityBudget"> 
     <br/> 
     <br> 
     Monthly Entertainment Budget: 
     <br/> 
      <input type="number" step="0.01" name="entertainmentBudget"> 
     <br/> 
     <br> 

     <input name="Add User" type="submit" value="Submit"> 
    </form> 

</body> 

このページへのフォームサミットボタンリンクのためのアクション:

Your input was received as: 

<?php 

$firstName = $_REQUEST["firstName"]; 
$lastName = $_REQUEST["lastName"]; 
$emailAddress = $_REQUEST["emailAddress"]; 
$foodBudget = $_REQUEST["foodBudget"]; 
$utilityBudget = $_REQUEST["utilityBudget"]; 
$entertainmentBudget = $_REQUEST["entertainmentBudget"]; 

echo '<br/>'; 
echo '<br/> Name: '; 
echo $firstName; 
echo '&nbsp'; 
echo $lastName; 
echo '<br/> Email Address: '; 
echo $emailAddress; 
echo '<br/> Food Budget: $'; 
echo $foodBudget; 
echo '<br/> Utility Budget: $'; 
echo $utilityBudget; 
echo '<br/> Entertainment Budget: $'; 
echo $entertainmentBudget; 
?> 

<?php 
require_once 'login.php'; 
$connection = mysqli_connect(
    $db_hostname, $db_username, 
    $db_password, $db_database); 
if(mysqli_connect_error()){ 
    die("Database Connection Failed: " . 
      mysqli_connect_error() . 
      " (" . mysqli_connect_errno() . ")" 
); }; 



$addUser = "INSERT INTO CUSTOMER (CustomerID, CustomerFirstName, CustomerLastName, CustomerEmail,FoodBudget, UtilityBudget, EntertainmentBudget) 
VALUES (001,{$connection ->real_escape_string($_POST[firstName])}, {$connection ->real_escape_string($_POST[lastName])},{$connection - >real_escape_string($_POST[emailAddress])}, {$connection ->real_escape_string($_POST[foodBudget])}, {$connection ->real_escape_string($_POST[utilityBudget])}, {$connection ->real_escape_string($_POST[entertainmentBudget])});"; 

$upload = mysqli_query($connection, $addUser); 

mysqli_close($connection); 




?> 

私はアクションを実行し、SELECT * FROM CUSTOMERS;フィールドをチェックnullを返すように続けています。誰かが私を正しい方向に向けることができますか?

+0

あなたのクエリをエコーし​​ようとすると、mysqlのコンソールでそれを実行することができます(表名は大文字と小文字が区別されているため)? – uzaif

+1

'$ connection - > real_escape_string($ _ POST [firstName])}のような一重引用符を' $ connection - > real_escape_string($ _ POST ['firstName'])}に入れてください。 ($ firstName)}、 ' – VipindasKS

+0

ああ、私は完全に引用符を逃した。 –

答えて

0

$firstName = mysqli_real_escape_string($firstName); 
$lastName = mysqli_real_escape_string($lastName); 
$emailAddress = mysqli_real_escape_string($emailAddress); 
$foodBudget = mysqli_real_escape_string($foodBudget); 
$utilityBudget = mysqli_real_escape_string($utilityBudget); 
$entertainmentBudget = mysqli_real_escape_string($entertainmentBudget); 

$addUser = "INSERT INTO CUSTOMER(CustomerID, CustomerFirstName, CustomerLastName, CustomerEmail, FoodBudget, UtilityBudget, EntertainmentBudget) VALUES (001, '" . $firstName . "', '" . $lastName . "', '" . $emailAddress . "', '" . $foodBudget . "', '" . $utilityBudget . "', '" . $entertainmentBudget . "')"; 
+0

あなたのテーブルは**本当に 'CUSTOMER'です。テーブル名は大文字と小文字が区別されます。 –

+0

すべて大文字ですか?コードでエラーは発生しませんでしたが、テーブルにデータが入力されませんでした。 – andrewxt

+0

SQL文の各変数の前後に一重引用符と二重引用符を追加した理由を説明できますか? – andrewxt

0

$アドユーザー=「CUSTOMER。INSERT INTO(得意先、CustomerFirstName、CustomerLastName、CustomerEmail、FoodBudget、UtilityBudget、EntertainmentBudget) VALUES(001、{$接続を試してください - ($ _ POSTをreal_escape_string> 【のfirstName])}、{$接続 - > real_escape_string($ _ POST [名])}、{$接続 - > real_escape_string($ _ POST [EMAILADDRESS])}、{$接続は - > real_escape_string($ _ POST [foodBudget])} 、{$接続 - > real_escape_string($ _ POST [utilityBudget])}、{$接続 - > real_escape_string($ _ POST [entertainmentBudget])}); "。

あなたは、二重引用符で囲まれた文字列内の関数を呼び出すようにしようとしています。それは不可能。あなたが変数のみを置換する限定されています。代わりに

使用文字列カテネーション。

$addUser = "INSERT INTO CUSTOMER (CustomerID, CustomerFirstName, CustomerLastName, CustomerEmail,FoodBudget, UtilityBudget, EntertainmentBudget) 
VALUES (001,'". 
$connection->real_escape_string($_POST[firstName]). 
"', '". 
$connection->real_escape_string($_POST[lastName]). 
"','". 
$connection->real_escape_string($_POST[emailAddress]). 
"', '". 
$connection->real_escape_string($_POST[foodBudget]). 
"', '". 
$connection->real_escape_string($_POST[utilityBudget])}. 
"', '". 
$connection->real_escape_string($_POST[entertainmentBudget]). 
"');"; 

さらに、プリペアドステートメントとプレースホルダを使用してください。

また、あなたはエラーをチェックし、もしあればそれらを表示することができます

if (!$connection->query($addUser)) { 
    printf("Error: %s\n", $connection->error); 
} 

あなたはそのテーブル名が間違っている見つけることができます。

+0

それはうまくいかなかったのですが、答えに感謝します。あなたのエラーチェックは実際に私に役立つかもしれない新しいエラーを与えました。 '非オブジェクト上のメンバ関数query()への呼び出し ' – andrewxt

+0

したがって、接続が確立されていないか、名前の正誤表がありますか?それをキャッチするエラー報告レベルを設定します。 http://php.net/manual/en/function.error-reporting.php – artoodetoo

+0

私はすべてトリプルチェックしており、データベースの大文字と小文字が区別されるため、すべてが正確です。そのエラーを引き起こす原因が他に何か分かっていますか? – andrewxt

関連する問題