2017-01-12 8 views
-1

古いバージョンのPHPを使用してこの簡単な更新ステートメントで何が間違っているのでしょうか。私は、ステートメントをエコーする場合は、更新声明がフォームが正しく提出されていると言う。ここでPHP MySQLのレコードの更新エラー

コードです:

<?php 
echo $q = "UPDATE notice SET FromDate = $notice_fromdate, ToDate = $notice_todate, VacType ='$notice_vactype',NoticeDetail ='$notice_detail',Status ='$notice_status' WHERE ID=$id"; 

if (mysql_query($link, $q)) { 
    echo "Record updated successfully"; 
} else { 
    echo "<h3>Error updating record</h3>". mysql_error($link)."-". mysql_errno($link). "\n"; 
} 

?> 

と出力リターンこの

UPDATE notice SET FromDate = 2017-01-08, ToDate = 2017-01-09, VacType ='May Day',NoticeDetail ='Testing',Status ='Enabled' WHERE ID=3 
Error updating record 
-0 

私はその非常に単純なことを知って、私は更新ステートメント内の任意のミスを犯したが、代わりにしていないと思いますエラー更新レコードを表示しています。出力されたSQL文をコピーしてphpmyadminで実行したところ、正しく動作しました。あなたが私を助けることができればいいと思う。前もってありがとうございます

注:クライアントのWebサイトは古いバージョンのPHPで構築されていますので、バージョンについて議論したり批判しない方がよいでしょう。

+4

を動作する日付に引用符を適用します** WARNING **:あなただけのPHPを学習している場合は、[ 'mysql_query']を使用しないでください(http://php.net /manual/en/function.mysql-query.php)インターフェイス。それはPHP 7で削除されたのでとてもひどいと危険です。[PDOのようなものは学ぶのが難しくない](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps -pdo-for-database-access /)と[PHP The Right Way](http://www.phptherightway.com/)のようなガイドがベストプラクティスを説明しています。あなたのユーザーデータは**適切にエスケープされていない**(http://bobby-tables.com/php.html)であり、[SQLインジェクションのバグ](http://bobby-tables.com/)があります。悪用される。 – tadman

+0

私はあなたにPDOの例を挙げたいと思いますが、あなたは、古いバージョンのphpを使って簡単な更新ステートメントで文章で判断することをMysql_を使ってはいけないということを既に知っていると感じています。 " – Option

+0

問題は、あなたの日付が算術演算になるようにSQLインジェクションを実行します。 –

答えて

-2

それは

<?php 
echo $q = "UPDATE notice SET FromDate = '$notice_fromdate', ToDate = '$notice_todate', VacType ='$notice_vactype',NoticeDetail ='$notice_detail',Status ='$notice_status' WHERE ID=$id"; 

if (mysql_query($link, $q)) { 
    echo "Record updated successfully"; 
} else { 
    echo "<h3>Error updating record</h3>". mysql_error($link)."-". mysql_errno($link). "\n"; 
} 

?> 
+0

これはハックです。本当の問題は、エスケープの完全な欠如です。 – tadman

+0

@tadman実際には、回答者はOPと同じエラーを出しました:mysql_query($ link、$ q) - 彼らはワゴンを馬の前に置いています。おそらく(本当の)問題の根源です。しかし、OPがmysqli_ APIに接続されていれば、それがどのように終了するかはよく分かります。 –