2016-12-14 4 views
-4

私はPHPとMYSQLの初心者です。データをデータベースに追加する簡単なコードは次のとおりです。それは動作していません connection.php(mysql接続変数を設定する)ファイルはすでに作成されており、他のファイルや関数とうまく動作しています。このコードはここにデータベースにデータを追加していない間にエラーが発生していません 誰かが問題がどこにあるのか教えていただけますか?mysql insertが動作していません

<?php 

if (isset($_POST['bookt']) & isset($_POST['type']) &   isset($_POST['publisher']) & isset($_POST['year']) & isset($_POST['class']) & isset($_POST['subject'])) { 

//set the values 
$bookt= $_POST['bookt']; 
$type= $_POST['type']; 
$publ=$_POST['publisher']; 
$year=$_POST['year']; 
$class= $_POST['class']; 
$subj= $_POST['subject']; 

    //INSERTING A ROW 
$add_query= "INSERT INTO books ('Book Title','Type','Publisher','Yearp', 'Class','Subject') 
VALUES ('$bookt','$type','$publ','&year','$class','$subj')"; 

//query 
$result=mysql_query($add_query); 
if (!$result) {die("couldn't perform query".mysql_error());} 
if ($result) {echo " </ br> <p><script type='text/javascript'>alert('INSERT   SUCCESSFUL!!!');</script></p><br /><br /> insert id was ".mysql_insert_id();} 
}; 

?> 
+2

'$ year'で、'&year'ではありません。また、あなたは[** SQLインジェクション**](https://www.owasp.org/index.php/SQL_Injection)を広く利用することができます。 –

+1

PHPから削除されたので[mysql_ functionsの使用をやめてください](http://stackoverflow.com/questions/12859942/why-shouldnt-i-ex-mysql-functions-in-php) – Machavity

答えて

1

このコードには大きな問題があります。

まず、don't use mysql_*を入力してください。 mysql_*の機能が古くなっており、deprecated、安全ではありません。 PHP 7から完全に削除されました。代わりにMySQLiまたはPDOを使用してください。

第2に、ブール "and"演算子はであり、&(ビット演算子 "and")ではありません。

第3に、$yearであり、&yearではありません。

第四に、バッククォートで列名を入れて、ではない単一引用符('...'):

$add_query= "INSERT INTO books (`Book Title`,`Type`,`Publisher`,`Yearp`, `Class`,`Subject'`) 
VALUES ('$bookt','$type','$publ','$year','$class','$subj')"; 

単一引用符は、あなたのクエリが失敗します。これがあなたのクエリがまったく機能しない理由です。

第5に、エラーチェックやデータ検証を行っていないことです。

第6に、あなたはSQL injectionに広くなっています。あなたは準備文を使用する必要があり、は決してをSQLに直接入力します。

さらに問題が発生する可能性がありますが、大きな問題です。

+0

ありがとう働き始めた –

1

あなたのif文で複数の条件をしたい場合は、論理演算子 "&" を使用します。また、mysql_は、PHP7から長い間使われていません。

関連する問題