0

我正在处理一个有两个字段的表单。一个是代码,另一个是名称。我有一个检查数据库中现有代码的验证。代码查询似乎可以正常工作,但名称却无法正常工作,尤其是在小写字母中。谁能帮我?这是我的代码:

<?php
session_start();
if (!isset($_SESSION["username"])) {
    header("Location: unauthorize_access.php");
}

require("includes/dbconnect.php");

if (isset($_POST['save'])) {

    $code   = $_POST["code"];
    $name   = $_POST["name"];


 {     
        mysql_query("INSERT INTO `country`(code, `name`)
            Values
                   ('$code', '$name')") or die(mysql_error());  

        print '<script type="text/javascript">';
        print 'alert("RECORDS ADDED SUCCESSFULLY")';
        header('refresh: 1; country.php');
        PRINT '</script>';
    }
}



?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Country</title>
<link rel="stylesheet" type="text/css" href="form2/view.css" media="all">
<script type="text/javascript" src="form2/view.js"></script>
<script type="text/javascript" src="form2/calendar.js"></script>
<script type="text/javascript">

  function checkForm()
  {
   if(country.code.value == "") {
      alert("Error: Code cannot be Empty!");
      country.code.focus();
      return false;
     }


   if(country.name.value == "") {
      alert("Error: Name cannot be Empty!");
      country.name.focus();
      return false;
     }


 }

</script>
<script type="text/javascript" src="chk/jquery-1.2.6.min.js"></script>

<SCRIPT type="text/javascript">
<!--


pic1 = new Image(16, 16); 
pic1.src = "loader.gif";

$(document).ready(function(){

$("#code").change(function() { 

var code = $("#code").val();

if(code.length >= 2)
{
$("#status").html('<img src="loader.gif" align="absmiddle">&nbsp;Checking availability...');

    $.ajax({  
    type: "POST",  
    url: "check_con.php",  
    data: "code="+ code,  
    success: function(msg){  

   $("#status").ajaxComplete(function(event, request, settings){ 

    if(msg == 'OK')
    { 
        $("#code").removeClass('object_error'); // if necessary
        $("#code").addClass("object_ok");
        $(this).html('&nbsp;<img src="tick.gif" align="absmiddle">');
    }  
    else  
    {  
        $("#code").removeClass('object_ok'); // if necessary
        $("#code").addClass("object_error");
        $(this).html(msg);
    }  

   });

 } 

  }); 

}
else
    {
    $("#status").html('<font color="red">The code should have at least <strong>2</strong> characters.</font>');
    $("#code").removeClass('object_ok'); // if necessary
    $("#code").addClass("object_error");
    }

});

});

//-->
</SCRIPT>
<SCRIPT type="text/javascript">
<!--


pic1 = new Image(16, 16); 
pic1.src = "loader.gif";

$(document).ready(function(){

$("#code").change(function() { 

var code = $("#code").val();

if(code.length >= 2)
{
$("#status").html('<img src="loader.gif" align="absmiddle">&nbsp;Checking availability...');

    $.ajax({  
    type: "POST",  
    url: "check_con.php",  
    data: "code="+ code,  
    success: function(msg){  

   $("#status").ajaxComplete(function(event, request, settings){ 

    if(msg == 'OK')
    { 
        $("#code").removeClass('object_error'); // if necessary
        $("#code").addClass("object_ok");
        $(this).html('&nbsp;<img src="tick.gif" align="absmiddle">');
    }  
    else  
    {  
        $("#code").removeClass('object_ok'); // if necessary
        $("#code").addClass("object_error");
        $(this).html(msg);
    }  

   });

 } 

  }); 

}
else
    {
    $("#status").html('<font color="red">The code should have at least <strong>2</strong> characters.</font>');
    $("#code").removeClass('object_ok'); // if necessary
    $("#code").addClass("object_error");
    }

});

});

//-->
</SCRIPT><SCRIPT type="text/javascript">
<!--


pic1 = new Image(16, 16); 
pic1.src = "loader.gif";

$(document).ready(function(){

$("#name").change(function() { 

var code = $("#name").val();

if(code.length >= 0)
{
$("#stat_2").html('<img src="loader.gif" align="absmiddle">&nbsp;Checking availability...');

    $.ajax({  
    type: "POST",  
    url: "check_con.php",  
    data: "name="+ name,  
    success: function(msg){  

   $("#stat_2").ajaxComplete(function(event, request, settings){ 

    if(msg == 'OK')
    { 
        $("#name").removeClass('object_error'); // if necessary
        $("#name").addClass("object_ok");
        $(this).html('&nbsp;<img src="tick.gif" align="absmiddle">');
    }  
    else  
    {  
        $("#name").removeClass('object_ok'); // if necessary
        $("#name").addClass("object_error");
        $(this).html(msg);
    }  

   });

 } 

  }); 

}
else
    {
    $("#stat_2").html('<font color="red"><strong>The name cannot be empty</strong></font>');
    $("#name").removeClass('object_ok'); // if necessary
    $("#name").addClass("object_error");
    }

});

});

//-->
</SCRIPT>
</head>
<body id="main_body" >

    <img id="top" src="form2/top.png" alt="">
    <div id="form_container">

        <h1><a>Country</a></h1>
        <form id="country" class="appnitro" enctype="multipart/form-data" method="post" onsubmit="return checkForm()">
                    <div class="form_description">
        <h2>Country</h2>

        </div>
                    <table border ="0px" width="100%">
                        <tr>
                            <td><label class="description" for="element_1">Code</label></td><td><input id="code" name="code"  type="text" maxlength="6"  Placeholder="Please enter a code" value=""/></td><td width="400" align="left"><div id="status"></div></td>
                        </tr>
                        <tr>
                            <td><label class="description" for="element_1">Name</label></td><td><input id="name" name="name" size="40" type="text" maxlength="40" Placeholder="Please enter a name" value=""/></td><td width="400" align="left"><div id="stat_2"></div></td>

                        </tr>
                        <tr>
                            <td></td><td ><input type="submit" name="save" value="Save"></td>
                        </tr>
                    </table>
                </form>

这是我的php代码。它适用于代码字段,但不适用于名称。

<?php
$dbHost     = 'localhost'; // usually localhost
$dbUsername = 'root';
$dbPassword = '';
$dbDatabase = 'pts_root';

$db = mysql_connect($dbHost, $dbUsername, $dbPassword) or die ("Unable to connect to Database Server.");
mysql_select_db ($dbDatabase, $db) or die ("Could not select database.");
if(isSet($_POST['code']))
{
$code = $_POST['code'];

$sql_check = mysql_query("SELECT * FROM country WHERE code='".$code."'") or die(mysql_error());

if(mysql_num_rows($sql_check))
{
echo '<font color="red">The code <STRONG>'.$code.'</STRONG> is already exist.</font>';
}
else
{
echo 'OK';
}

}

?>
<?php
$dbHost     = 'localhost'; // usually localhost
$dbUsername = 'root';
$dbPassword = '';
$dbDatabase = 'pts_root';

$db = mysql_connect($dbHost, $dbUsername, $dbPassword) or die ("Unable to connect to Database Server.");
mysql_select_db ($dbDatabase, $db) or die ("Could not select database.");
if(isSet($_POST['name']))
{
$name = $_POST['name'];

$sql_check = mysql_query("SELECT * FROM country WHERE UPPER(`name`)='".$name."'") or die(mysql_error());
if(mysql_num_rows($sql_check))
{
echo '<font color="red">The name <STRONG>'.$name.'</STRONG> is already exist.</font>';
}
else
{
echo 'OK';
}

}

?>
4

3 回答 3

0

改变

$name = $_POST['name'];

$name = strtoupper($_POST['name']);

因此,您将大写输入与大写字段进行比较。

于 2013-01-25T06:49:31.573 回答
0

我正在看这个特定的部分:

$sql_check = mysql_query("SELECT * FROM country WHERE UPPER(`name`)='".$name."'") or die(mysql_error());
if(mysql_num_rows($sql_check))

如果不阅读所有其余代码,并试图找出您的测试用例,了解 MySQL 可以使用“不区分大小写”排序规则可能会对您有所帮助。

UPPER 函数会将存储的值转换为大写,但如果排序规则不区分大小写,则不会真正影响比较。

您可能需要考虑使用 BINARY 运算符。

SELECT * FROM country WHERE BINARY UPPER(`name`)= 'FOO'

http://dev.mysql.com/doc/refman/5.5/en/charset-binary-op.html

在 MySQL 中检查排序规则的一种快速方法是:

SHOW VARIABLES LIKE 'collation%'

您可能会看到如下值:

utf8_general_ci
latin1_swedish_ci  

_ci排序规则名称的末尾将其标识为“不区分大小写”排序规则,这基本上意味着 'ABC' = 'abc' 评估为 TRUE。

排序规则也可以在单个表和列级别指定。

有关更多信息,请参阅 MySQL 参考 http://dev.mysql.com/doc/refman/5.5/en/charset.html

注意:对于 php 5 和 mysqli,不要使用SET names查询,而是使用mysqli_set_charset.

http://php.net/manual/en/mysqli.set-charset.php

于 2013-01-25T06:59:51.030 回答
0

您也可以使用like

SELECT * FROM country WHERE `name` like '$name'

希望这可以帮助

于 2013-01-25T07:01:20.497 回答