MySQLテーブルにデータを挿入するための単純なフォームを作成するのに問題があります。私はこのSQLエラーを受け取り続けます:
"エラー:SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、 'stock(' ItemNumber '、' Stock ')の近くで使用する正しい構文を確認してください。VALUES('#4 '、' 3 ' ')' 1行目 "
私の[〜#〜] html [〜#〜]フォームは次のとおりです。
<form action="database.php" method="post">
Item Number: <input type="text" name="ItemNumber">
Stock: <input type="text" name="Stock">
<input type="submit">
</form>
そして[〜#〜] php [〜#〜]は:
<?php
$con=mysqli_connect("localhost","root","root","inventory");
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "INSERT INTO current stock ('ItemNumber', 'Stock')
VALUES
('$_POST[ItemNumber]','$_POST[Stock]'')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>
これを試して
POST。の周りのパラメーターの引用符は使用しないでください。また、POST内で使用する必要があります。
$sql = "INSERT INTO `current stock` (ItemNumber, Stock)
VALUES
('".$_POST['ItemNumber']."', '".$_POST['Stock']."' )";
そのようにmysqlに挿入する前に、変数をエスケープする必要があります
mysqli_real_escape_string
を呼び出さないことに注意してください。文字列をクエリに直接埋め込む場合にのみmysqli_real_escape_string
を使用する必要がありますが、これは絶対に行わないことをお勧めします。可能な限り、常にパラメータを使用してください。余分な引用符があり、スペースが含まれているため、テーブル名をチェックする必要があります。
INSERT INTO current stock ('ItemNumber', 'Stock')
VALUES
('$_POST[ItemNumber]','$_POST[Stock]'')";
する必要があります:
INSERT INTO `current stock` (`ItemNumber`, `Stock`)
VALUES
('$_POST[ItemNumber]','$_POST[Stock]')";
参考までに、あなたは SQLインジェクション にも広くオープンです
パラメータバインディングの使い方を学んでください。セキュリティの脆弱性を伴うコードを作成しています。
Mysqliでコードを実行する方法は次のとおりです。
$sql = "INSERT INTO current stock (ItemNumber, Stock) VALUES (?, ?)";
if (!($stmt = mysqli_prepare($con, $sql))) {
die('Error: ' . mysqli_error($con));
}
if (!mysqli_stmt_bind_param($stmt, "ii", $_POST[ItemNumber], $_POST[Stock])) {
die('Error: ' . mysqli_stmt_error($stmt));
}
if (!mysqli_stmt_execute($stmt)) {
die('Error: ' . mysqli_stmt_error($stmt));
}
すべてを引用符内の引用符と混同するよりも、バインドされたパラメータを使用する方が簡単です。
?php
$conn=new mysqli("localhost","root","","inventory")
or die("not connected".mysqli_connect_error());
if(isset($_POST['submit']{
$ItemNumber=$_POST['ItemNumber'];
$Stock=$_POST['Stock'];
$sql="insert into current stock(ItemNumber,Stock) values('$ItemNumber','$Stock')";
$query=mysqli_query($conn,$sql);
if($query){
echo"1 row inserted";
}else{
echo mysqli_error($conn);
}
}
?>