0

mysqlデータベースのテキストフィールドを更新したいのですが、クエリを実行しても変更されません。特殊文字を削除しようとしましたが、それでも機能しません。

更新:次のエラーが返されます:次のエラーが発生します:

SQL構文にエラーがあります。'datatext ='LET OP!の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。1行目のAantalMate'

データは次のとおりです。

HTML

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<input type="hidden" name="nr" value="1">
<textarea rows="20" cols="50" name="text"></textarea>
</form>

PHP

$change_text = $_POST['text'];
$change_nr = $_POST['nr'];
if ((!empty($change_text))&&(!empty($change_nr)))
{
mysql_query("UPDATE table SET datatext='$change_text' WHERE datanr='$change_nr'");
}

構造MySQL(テーブル名=テーブル)

datanr = int(6)
order = text utf8_general_ci
4

6 に答える 6

1

テキスト領域のせいではありません。SQLは、テーブルにないように見える列名を参照しています。

スキーマにはとがdatanrありorder、更新クエリにはとがdatanrありdatatextます。

その他のヒント:

  1. mysqlキーワードを列名またはテーブル名として使用したり、必要に応じて少なくとも`backticks`でエスケープしたりしないでください。
  2. ユーザー入力を常に検証/サニタイズする
  3. 使用しないでくださいmysqlが、mysqlipdo、またはそれ以上の優れたデータアクセス層を使用してください
于 2012-11-13T09:37:49.473 に答える
0

はは!私は問題を知っています!クエリです。列名の前後にこれらの特別な引用符を使用する必要があります。このように:mysql_query( "UPDATE table SET datatext='$ change_text' WHERE datanr ='$ change_nr'");

データテキストの引用符に注意してください。これで、スクリプトが機能するはずです。そうでなければ、パソコンをシャットダウンしてすぐに寝ます笑

于 2012-11-13T10:54:47.643 に答える
0

空の代わりにキーが存在することを確認してみてください

    if (array_key_exists('nr', $_POST)) {
        $change_text = $_POST['text'];
        $change_nr = $_POST['nr'];
        mysql_query("UPDATE table SET datatext='$change_text' WHERE datanr='$change_nr'");
    }
于 2012-11-13T09:12:05.527 に答える
0

コードをデバッグする

var_dump($_POST);

$change_text = $_POST['text'];
$change_nr = $_POST['nr'];

if ((!empty($change_text))&&(!empty($change_nr)))
{
    $sqlString = "UPDATE table SET datatext='$change_text' WHERE datanr='$change_nr'";
    var_dump($sqlString);
    mysql_query($sqlString) or die(mysql_errno() . " " . mysql_error()); 
}
于 2012-11-13T09:20:03.930 に答える
0

フォームに<inputtype="submit"/>がありません。送信ボタンがないと、フォーム(およびデータ)を送信できません。

于 2012-11-13T10:04:42.233 に答える
0

クエリは次のようになります。

mysql_query("UPDATE table SET datatext='".$change_text."' WHERE datanr=".$change_nr);
于 2013-03-07T11:15:50.737 に答える