-2

我是 php 新手,我制作了一个表单,其中有两个字段 Code 和 Name,我需要验证它已经在数据库中的 name 的值,但是当我以大写形式插入值时,它不验证 name 的值在大写和小写反之亦然这是我的代码

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 语句中的列不正确(对于一个)。另外,正如其他人所指出的,请使用 mysqli_* 或 PDO 系列的 SQL 语句。

<?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 回答