2017-06-22 6 views
1

私は単純な登録フォームからMySQLにデータを挿入しようとしています。私はdbをAmazon AWS RDSでホストし、DBeaverを使ってそれを編集しています。コードを実行すると、次のようになります。私のPHPがMySQL DBに挿入されていない理由を理解できません

affected_rows。 "データがデータベースに挿入されました。 } else {echo " エラーが発生しました。項目は追加されませんでした。 } $ db-> close(); ?>

どうすればこの問題を解決できますか?私のPHPは間違っていますか?私はMySQLiを使用できるかどうか分かりませんが、どうすればそれを決めることができますか?私はAmazon RDS MySQLと互換性があると仮定しています。ここで

<?php 
// create short variable names 
$name=$_POST['name']; 
$birthdate=$_POST['birthdate']; 
$email=$_POST['email']; 
$password=$_POST['password']; 
$address=$_POST['address']; 
$city+$_POST['city']; 

if (!get_magic_quotes_gpc()) { 
    $name = addcslashes($name); 
    $birthdate = addslashes($birthdate); 
    $email = addcslashes($email); 
    $password = addcslashes($password); 
    $address = addcslashes($address); 
    $city = addcslashes($city); 
} 

$host='xxxxxx' 
$user='admin' 
$password='xxxxx' 
$dbname='users' 
@ $db = mysqli_connect($host,$user,$password,$dbname) 

if (mysqli_connect_errno()) { 
    echo 'Error: Could not connect to database. Please try again later.'; 
    exit; 
} 

// Execute the query 
$query = "INSERT INTO vestorinfo (name,birthdate,email,password,address,city) 
    VALUES ('$_POST[name]','$_POST[birthdate]','$_POST[email]','$_POST[password]','$_POST[address]','$_POST[city]')"; 
$result = mysqli_query($query) 
     or die ("Couldn't execute query."}; 

if ($result) { 
    echo $db->affected_rows." data inserted into database."; 
} else { 
    echo "An error has occurred. The items were not added."; 
} 

$db->close(); 
?> 

<div id="registerform"> 
    <form action="php/registerprocess.php" method="post" class="form-horizontal"> 

<fieldset> 

<!-- Form Name --> 

<!-- Text input--> 
<div class="form-group"> 
    <label class="col-md-4 control-label" for="name">Name</label> 
    <div class="col-md-4"> 
    <input id="name" name="name" placeholder="Your name" class="form-control input-md" required="" type="text"> 

    </div> 
</div> 

<!-- Text input--> 
<div class="form-group"> 
    <label class="col-md-4 control-label" for="birthdate">Birth Date</label> 
    <div class="col-md-4"> 
    <input id="birthdate" name="birthdate" placeholder="07/04/1950" class="form-control input-md" required="" type="text"> 

    </div> 
</div> 

<!-- Text input--> 
<div class="form-group"> 
    <label class="col-md-4 control-label" for="email">Email</label> 
    <div class="col-md-4"> 
    <input id="email" name="email" placeholder="" class="form-control input-md" required="" type="text"> 

    </div> 
</div> 

<!-- Password input--> 
<div class="form-group"> 
    <label class="col-md-4 control-label" for="password">Password</label> 
    <div class="col-md-4"> 
    <input id="password" name="password" placeholder="" class="form-control input-md" required="" type="password"> 
    <span class="help-block">Must be &gt;= 8 characters including at least 1 number</span> 
    </div> 
</div> 

<!-- Text input--> 
<div class="form-group"> 
    <label class="col-md-4 control-label" for="email">Address</label> 
    <div class="col-md-4"> 
    <input id="address" name="address" placeholder="" class="form-control input-md" required="" type="text"> 
    </div> 
</div> 

<!-- Text input--> 
<div class="form-group"> 
    <label class="col-md-4 control-label" for="email">City</label> 
    <div class="col-md-4"> 
    <input id="city" name="city" placeholder="" class="form-control input-md" required="" type="text"> 
    </div> 
</div> 
</div> 

</fieldset> 
+3

PHPが実行されていないように見えますが、本当のエラーをエコーし​​ないのはなぜですか? –

+1

あなたはSQLインジェクションのために広くオープンしています。 mysqliを使用しているので、[prepared statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と[bind_param](http://php.net/ manual/en/mysqli-stmt.bind-param.php)。これにより、あなたがしているかもしれない厄介な引用問題が修正されます。また、途中でmysqliエラーをチェックしてください。 – aynber

+0

'$ city + $ _ POST ['city'];'は '$ city = $ _ POST ['city'];'これらの値をすべて設定した後、なぜあなたの挿入物の$ _POST値を使うのか? –

答えて

1

あなたのコードは、SQLインジェクションのリスクがあるhtmlページからフォームであり、あなたが行方不明の質問にとにかく尊重しますが、代わりに$ _POST としてVARの結合のparamを使用する必要がありますインサートは が原因で間違った方法で、$ _POSTのインデックスを参照しているという事実に関連している可能値

例えば:あなたは連結をすべき使用して

$query = "INSERT INTO vestorinfo (name,birthdate,email,password,address,city) 
     VALUES ('" . $_POST['name'] ." , " . $_POST['birthdate'] .", " . 
     $_POST['email'] . "," . $_POST['password'] . "," . 
     $_POST['address'] . "," . $_POST['city'] . ")"; 
+0

PHPが実行されていないなど、他にも多数の問題があります。 – chris85

+0

@ chris85。になり得る 。私はちょうど最初の一見を与えた。 – scaisEdge

+0

私は注入問題を処理する前に少なくともPHPを実行したいと思います – PhilFredo

関連する問題