0

わかりました、私はこのコードを持っています。

<? //process.php, this will be use in updating, adding, deleting items and content
$a = $_POST['hid'];
$b = $_POST['doctitle'];
$c = $_POST['doccontent'];

if (isset($_POST['hid']) && ($_POST['doctitle']) && ($_POST['doccontent']))
{

$con = mysql_connect("localhost","root","");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("juliver", $con);

mysql_query("UPDATE doc SET title='$b', content='$c' WHERE id='$a'");

echo "<h2>Successfully updated.</h2>";

mysql_close($con);

}
else
{
echo "not been set, failed to process. please try again.";
}
?>

テーブル doc の指定された行を更新したいのですが、id $a を介して、この $b のタイトルとこの $C のコンテンツを更新する必要があります。しかし、何も起こりません。コードに問題がありますか?、次は、レコードが更新されたかどうかを知りたいです。前もって感謝します。

4

2 に答える 2

1
  1. idが整数列の場合、'その値の周りで使用しないでください。

    WHERE id=$a

  2. mysql_affected_rows()関数を使用して、影響を受ける行の数を確認できます。

    $rowsAffected = mysql_affected_rows($con);

  3. また、クエリ文字列を確認し、MySQL で手動で (PhpMyAdmin などで) 実行して、正常に動作するかどうかを確認する必要があります。

  4. あなたのコードにはアンチ SqlInjection 部分がありません。より安全にするために、 PDOまたは任意の種類のエスケープ関数を使用する必要があります。

于 2012-04-29T14:53:30.400 に答える
-1

ifステートメントが実行されていることを確認しますか(つまり、$ _ POST ['hid']および他のpostvarsが設定されています)?また、他の2つの変数ではなく'hid'でisset()を実行するのはなぜですか?

ああ、そして上記のように、MySQLインジェクションから保護するために常に変数をサニタイズする必要があります。いつでもmysql_real_escape_stringを使用できます

于 2012-04-29T15:03:56.453 に答える