-2

私はphpを初めて使用します。コードと名前の2つのフィールドを持つフォームを作成しました。名前の値がデータベースに既に存在することを検証する必要がありますが、値を大文字で挿入すると、名前の値が検証されません大文字と小文字の両方で、ここに私のコードがあります

if(mysql_query("SELECT * FROM country "
              ."WHERE $_POST['name']='$name' and $_POST['code']='$code'" )))
{
    echo "Sorry! Your details are already in our database";
} else {
    [...]
}
4

2 に答える 2

1

基本的に、SQL ステートメントの列が正しくありません (1 つ)。また、他の人が指摘したように、SQL ステートメントの mysqli_* または PDO ファミリを使用してください。

<?php

$count = 0;
$name = strtolower(mysql_real_escape_string(isset($_POST['name']) ? $_POST['name'] : ""));
$code = strtolower(mysql_real_escape_string(isset($_POST['code']) ? $_POST['code'] : ""));

$query = "SELECT name FROM country WHERE LOWER(name)='".$name."' AND LOWER(code)='".$code."'";

$result = mysql_query($query);

if($result != null)
{
    $count = mysql_num_rows($result);
}

if($count <= 0)
{
    echo "Sorry! Your details are already in our database";
} 
else
{
    // ...
}

?>
于 2013-01-25T14:51:40.213 に答える
-1

1) コードが安全でないため、$_POST を直接使用しないでください。このデータをフィルタリングする必要があります。PHP http://php.net/manual/fr/function.filter-var.phpのフィルター関数を次に示します。

$username = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
$code = filter_var($_POST['code'], FILTER_SANITIZE_STRING);

その場合にのみ、これらの値を使用してデータベースにクエリを実行することを検討できます。

2) 利用可能な場合は、PDO http://php.net/manual/fr/book.pdo.phpを使用することをお勧めします。

于 2013-01-25T14:16:30.597 に答える