数据校验php/mysql/jquery

Posted

技术标签:

【中文标题】数据校验php/mysql/jquery【英文标题】:Data verification php/mysql/jquery 【发布时间】:2014-02-10 13:53:06 【问题描述】:

我正在尝试从 excel 文件中检索数据并将其发送到 php 文件以检查它是否存在于数据库中,否则会通知用户数据错误。

HTML

<form name="trialInsert" id="trialInsert" action="trial_insert_excel.php"  method="post">
<?php foreach( $data as $row )  ?>
<tr class="item-row">
<td><input type="text"  name="acc_code[]" id="acc_code[]" class="code" onchange="validate();" value="<?php echo ($row['acc_code']); ?>"/></td>
<td><input type="text" readonly name="int_code[]" id="int_code[]" value="<?php echo ( $row['int_code']); ?>"/></td>
<td><input type="text" readonly name="debit[]" id="debit[]" value="<?php echo ( $row['debit'] ); ?>"/></td>
<td><input type="text" readonly name="credit[]" id="credit[]" value="<?php echo( $row['credit'] ); ?>"/></td>
<td><input type="text" readonly name="debitOld[]" id="debitOld[]" value="<?php echo( $row['debitOld'] ); ?>"/></td>
<td><input type="text" readonly name="creditOld[]" id="creditOld[]" value="<?php echo($row['creditOld'] ); ?>"/></td>
</tr>
<?php  ?>

jQuery

$(document).ready(function()
    var code = $('.code').val()
    jQuery.ajax(
        type: 'POST',
        source:'autocomplete.php',
        data: 'acc_code='+ code,
        cache: false,
        success: function(response)
            if(response > 0)
                alert(code);
             else 
                $('.code').addClass('errorClass');
            
        
    );
);

function validate()
    var code = $('.code').val()
    jQuery.ajax(
        type: 'POST',
        url: 'autocomplete.php',
        data: 'acc_code='+ code,
        cache: false,
        success: function(response)
            if(response > 0)
                alert(code);
             else 
                $('.code').addClass('errorClass');
            
        
    );

PHP

$q=$_GET['q'];
$my_data=mysql_real_escape_string($q);
$mysqli=mysqli_connect('localhost','root','03300130','mydb') or die("Database Error");
$sql="SELECT acc_code,acc_desc,acc_type FROM charts WHERE acc_code LIKE '%$my_data%' ORDER BY acc_code";
$result = mysqli_query($mysqli,$sql) or die(mysqli_error());
if($result) 
    echo 1;
 else 
    echo 0;

看起来返回值错误什么的,文本框总是变红,好像输入的数据是错误的,即使不是。

【问题讨论】:

这次我已经为您介绍了,但以后请在点击提交之前检查问题预览。 【参考方案1】:

您正在混合使用 mysqli_*mysql_* 命令。

引用mysql_real_escape_string()的文档:

Returns the escaped string, or FALSE on error.

因为你没有mysql_connect() 调用之前它很可能会返回错误。您可以通过var_dump($my_data); 进行检查。

您可以改用mysqli_real_escape_string(),或者您应该查看准备好的语句。注意:mysqli_real_escape_string() 也必须在 mysqli_connect() 调用之后调用。

【讨论】:

我在自动完成示例中使用了相同的命令,它返回了所需的值,但我不知道为什么不是, $q=$_GET['q']; $mysqli=mysqli_connect('localhost','root','03300130','mydb') 或 die("数据库错误"); $my_data=mysqli_real_escape_string($mysqli,$q); $sql="SELECT acc_code,acc_desc,acc_type FROM charts WHERE acc_code LIKE '%$my_data%' ORDER BY acc_code"; $result = mysqli_query($mysqli,$sql) 或死(mysqli_error());按照您的建议进行了调整,但仍然没有我不知道它返回的值是多少,我尝试与 false,true,0,1,null 进行比较,但没有 使用var_dump()进行调试。 即使在数据库中找不到任何内容,它也会返回成功值 当然,您实际上并没有检查结果包含的内容。只要查询中没有错误,它将等同于 true。

以上是关于数据校验php/mysql/jquery的主要内容,如果未能解决你的问题,请参考以下文章

C1认证学习三(数据校验)

C1认证学习三(数据校验)

JSR303数据校验

Struts2请求参数校验

数据校验之XML文件校验

Hive表数据质量校验的设计与开发