值验证(如果已存在于数据库中)

时间:2013-01-25 14:09:49

标签: php sql

我是php的新手我已经创建了一个表单,其中我有两个字段Code和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 {
    [...]
}

2 个答案:

答案 0 :(得分: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
{
    // ...
}

?>

答案 1 :(得分:-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