1

ユーザーが支払う家賃の金額を入力するフォームがあります。

<form action="search_results.php" method="get">
  <input type="text" name="rent" value="$" />
</form>

ユーザーが家賃を入力するときにフィールドにドル記号を保持するために jQuery を使用しています。

$('input[name=rent]').keyup(function() {
   $(this).val(function(i,v) {
     return '$' + v.replace('$',''); //remove existing, add back.
   });
 });

フォームが search_results.php ページに送信されるとき、次の get 変数が添付された URL に送信されます。

http://www.domain.com/search_results.php?rent=%24

ページの読み込みが開始されると、次のエラー メッセージが表示されます。

警告: mysqli_error() は正確に 1 つのパラメーターを予期します。0 は /nfs/c09/h01/mnt/12345/domains/www.domain.com/html/search_results.php の 551 行目に指定されています

SQL ステートメントが $_GET['rent'] 変数を使用して、入力された家賃よりも少ないすべてのリストを並べ替えているため、エラーが発生することは間違いありません。

search_results.php ページに送信する前に入力フィールドからドル記号を削除するにはどうすればよいですか、または search_results.php ページの URL から %24 を削除してページをリロードするにはどうすればよいですか?

4

4 に答える 4

2

これを試して:

$('form').submit(function(){
  $('input[name=rent]').val($('input[name=rent]').val().replace('$', ''))
})
于 2012-07-13T18:37:49.637 に答える
1

これはうまくいくはずです:

$('form').submit(function(){
  $('input[name=rent]').val(function(index, valueWith$){
    return valueWith$.substring(1);
  });
  return true;
});
于 2012-07-13T18:36:31.607 に答える
1

さて、これがより良い解決策です - 彼が合格した後にデータをフィルタリングできます:

$rent = str_replace('$','',$_GET['rent']);
$rent = str_replace('%24','',$rent);

ところで - SQL インジェクションについてもっと学ぶことをお勧めします。

于 2012-07-13T18:38:25.407 に答える
0

このエラーは、mysqli リソースを与えていないために発生します。

if (!mysqli_query($link, $query)) {
   printf("Errormessage: %s\n", mysqli_error($link));
}

この関数を次のように呼び出すだけです。mysqli_error();

于 2012-07-13T19:18:58.443 に答える