数据校验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的主要内容,如果未能解决你的问题,请参考以下文章