2017-10-14 6 views
1

コメントボードを作成しようとしています。ここに私のテーブルには、私は、主キーと自動インクリメントとしてguestIDを設定し、私はPHPでの入力に新しいゲストの名前をしようとするたびに、それが唯一の新しいIDを持つ新しい列を作成することができPHPMyAdminの によってenter image description herephpでMysqlにテキストをアップロードできません

を作成することですしかし、名前なし。あなたは、クエリに変数の値を代入していない

<?php 
mysql_connect("localhost","root","root"); 
mysql_select_db("guest"); 
mysql_query("set names utf8"); 

$guestName=$_POST['guestName']; 


mysql_query("insert into guest value(`guestID`, `guestName`)"); 


?> 
<!DOCTYPE html> 


<body> 
<div class="container"> 
<div class="top"> 
<h3>New comment</h3> 
</div> 
<form id="form1" name="form1" method="post" action="" class="form-horizontal"> 
    <div class="form-group"> 
     <label for="guestName" class="col-sm-4 control-label">Name:</label> 
     <div class="col-sm-6"> 
      <input type="text" class="form-control" placeholder="guestName" name="guestName" id="guestName" /> 
     </div> 


    <div class="button"> 
     <input type="submit" name="button" id="button" value="send" class="btn"/> 
    </div> 
</form> 

答えて

0

enter image description here

は、ここに私のコードです。値のリストの前のキーワードはvalueではなくvaluesです。

$guestName = mysql_real_escape_string($_POST['guestName']); 

mysql_query("insert into guest (guestName) values ('$guestName')"); 

また、バッククォートではなく、文字列を一重引用符で囲む必要があることに注意してください。 When to use single quotes, double quotes, and backticks in MySQL

mysqliまたはPDOにアップグレードし、旧式のmysql拡張子の代わりにprepared statementを使用する必要があります。しかし、mysqlを使用する場合は、SQLインジェクションを防ぐためにユーザー入力をエスケープする必要があります。

+0

その作業!どうもありがとうございます。 –

0

guestIDフィールドにプライマリキーと自動インクリメントを設定しているので、新しい行を挿入するときにインクリメント値が自動的に取得されるため、挿入クエリでは使用しないでください。あなたが作ったもう一つの間違いは、列名を渡さなかったことです。上記のクエリで

$guestName=$_POST['guestName']; 


mysql_query("insert into guest (guestName) value(".$guestName.") "); 

、2つのブラケットがあることを通知は、最初の列名のためである、と同じ順序で、あなたは値ブラケットを記述する必要があります。

+0

ありがとうございます –

+0

Backticksが間違っています。 https://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double-quotes-and-backticks-in-mysql – Barmar

+0

@seamaszhouをご覧ください。あなたはその答えを受け入れるかもしれません。 –

関連する問題