0

私はphpを学んでいます、そして今私は立ち往生しています。タイトルというテーブルの情報をフィールドidとzagolovokで更新する必要があるコードがありますが、更新されず、エラーなしで白い画面が表示されます。

$db = mysql_connect('server', 'login', 'passr' );
mysql_select_db(u20221, $db);  
$query = mysql_query("UPDATE title SET zagolovok = '$_REQUEST[title]' WHERE id = 5");  
mysql_close($db);

プライバシーのためにPSサーバー/ログイン/パスが変更されました

4

3 に答える 3

1

これを試して

$db = mysql_connect('server', 'login', 'passr' );
if( !$db) die("no connection");
mysql_select_db(u20221, $db);  
$query = mysql_query("UPDATE title SET zagolovok = '".$_REQUEST['title']."' WHERE id = 5");  
mysql_close($db);

タイトルはテーブル名ですか、それとも列ですか??? 構文は UPDATE table SET column = value WHERE ...

于 2012-08-15T10:24:35.380 に答える
1
$_REQUEST[title]   $_REQUEST is an array use $_REQUEST['title'] 
 $query = mysql_query('UPDATE title SET zagolovok = "\'$_REQUEST['title']\'" WHERE id = 5');
于 2012-08-15T10:23:10.140 に答える
1

エラー報告をオンにすると、データベース名を引用符で囲む必要があることが通知されます。

これを行うには、インデックス (または実行されたファイル) の先頭に次を追加します。

error_reporting(E_ALL);

そして、ブラウザに表示されるようにするには:

ini_set('display_errors', 'On');

SQL Injectionまた、これを修正するために、コードが に対して脆弱であることにも注意してください(および他の未定義の定数):

$safeTitle = mysql_real_escape_string($_REQUEST['title']);
$query = mysql_query("UPDATE title SET zagolovok = '$safeTitle' WHERE id = 5"); 

PDOまたは、強く推奨される準備済みステートメントに切り替えて使用することもできます。

于 2012-08-15T10:23:14.017 に答える