Php $\u POST未正确传递到mysqli查询(无错误,我看到我的值已传递,但不会绑定)
好的,我有一个非常简单的表单,它在我的db表中查找值。我还没有完全完成它,在我想使用Jquery日期选择器之前,我一直在努力工作(我希望能够在一大组定制的年份内轻松地进行选择) 由于我自己的原因,数据库中的表不使用总日期值,因此我将该值拆分为字符串进行查找(html5可以正常工作,但jquery似乎无法正常工作) 现在,我的代码中出现了“调用非对象上的成员函数data_seek()”。我已经将其拆开并尝试修复了几个小时,我恳请您的帮助,以便社区: 以下是PHP代码:Php $\u POST未正确传递到mysqli查询(无错误,我看到我的值已传递,但不会绑定),php,mysql,mysqli,Php,Mysql,Mysqli,好的,我有一个非常简单的表单,它在我的db表中查找值。我还没有完全完成它,在我想使用Jquery日期选择器之前,我一直在努力工作(我希望能够在一大组定制的年份内轻松地进行选择) 由于我自己的原因,数据库中的表不使用总日期值,因此我将该值拆分为字符串进行查找(html5可以正常工作,但jquery似乎无法正常工作) 现在,我的代码中出现了“调用非对象上的成员函数data_seek()”。我已经将其拆开并尝试修复了几个小时,我恳请您的帮助,以便社区: 以下是PHP代码: <?php $
<?php
$estring = substr($_POST[idvalue],-10, 5);
$wstring = substr($_POST[idvalue],6);
$mysqli = mysqli_connect("localhost", "usr", "", "xyz");
echo $estring."<br>";
echo $wstring;
$stmt = $mysqli->prepare('SELECT * FROM western WHERE id = ?');
$stmt->bind_param('s', $wstring);
$stmt->execute();
while ($row = $stmt->fetch()) {
echo "sign: ". $row['Western Zodiac Description']."<br>";
echo " Birth Card: = " . $row['Birth Card'];
echo " : =" . $row['Birth Card Descripton']."<br>";
echo "Planetary Card =". $row['Planatray Card'];
echo " : ". $row['Planatary Card Description']."<br>";
echo " 2nd Planetary Card =". $row['2nd Planatray Card'];
echo ": " . $row['2nd Planatary Card Description']."<br>";
}
$mysqli->close();
?>
以下是前端HTML:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>project </title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">
<script>
$(function() {
$( "#datepicker" ).datepicker({
yearRange: "1645:2112",
changeMonth: true,
changeYear: true
});
});
</script>
</head>
<body>
<br>
<form action="outputb.php" method="post">
enter date: <input type="text" id="datepicker" name='idvalue'>
<br>
<br>
<input type="submit" value="Search"/>
</form>
</body>
</html>
项目
$(函数(){
$(“#日期选择器”)。日期选择器({
年份范围:“1645:2112”,
变化月:对,
变化年:对
});
});
输入日期:
首先将连接更改为
$mysqli = new mysqli("localhost", "usrnm", "xxxyz", "db");
if ($mysqli->connect_errno) {
die( $mysqli->connect_error);
}
然后更改查询
字符串
$query = "SELECT * FROM western WHERE id IS '$wstring'";
到
同时添加错误报告
($mysqli->error
)和最终建议:
if ($res = $mysqli->query($query)){
//$res->data_seek(0);
if ($res->num_rows == 0){ // use if required
echo 'no data found!';
}
while ($row = $res->fetch_assoc()){
echo "sign: ". $row['Western Zodiac Description']."<br>";
echo " Birth Card: = " . $row['Birth Card'];
echo " : =" . $row['Birth Card Descripton']."<br>";
echo "Planetary Card =". $row['Planatray Card'];
echo " : ". $row['Planatary Card Description']."<br>";
echo " 2nd Planetary Card =". $row['2nd Planatray Card'];
echo ": " . $row['2nd Planatary Card Description']."<br>";
}
echo 'DEBUG OUTPUT <br>';
echo $estring."<br>";
echo $wstring;
$mysqli->close();
}else{
die($mysqli->error);
}
if($res=$mysqli->query($query)){
//$res->data\u seek(0);
如果($res->num_rows==0){//需要时使用
回显“未找到数据!”;
}
而($row=$res->fetch_assoc()){
回声“符号:.$row[‘西生肖描述’]。“
”;
echo“出生卡:=”$行[“出生卡];
echo“:”.$row[“出生卡描述符”]。“
”;
echo“行星卡=“.$row['Planatray卡]”;
echo“:“$row['Planatary Card Description']”行“
”;
echo“第二张行星卡=”.$row[“第二张行星卡”];
echo“:“$row['2nd Planatary Card Description']”行“
”;
}
回显“调试输出
”;
echo$estring.“
”;
echo$wstring;
$mysqli->close();
}否则{
死($mysqli->error);
}
其中id='$wstring'
。MySQL中的is no是表示相等的
关键字。现在是开始学习在MySQLi中使用$wstring
占位符正确绑定参数的时候了。请参阅以保护此脚本不受SQL注入的影响,该脚本当前易受攻击。很抱歉,我尝试了这两种方法,但都没有修复它,并且忘记了对其进行更改。您始终需要检查错误。如果mysqli\u query()
失败,则需要使用If(!$res)echo mysqli\u error($mysqli)进行验证代码>以获取错误详细信息。其他问题-在SQL语句周围使用单引号字符串。这意味着变量$wstring
没有在字符串中展开,您实际上是在字符串'$wstring'
中发送,而不是在变量内容中发送。阅读这里的单双引号之间的区别:如果我的数据返回零结果(我不知道它是否是因为“0结果”计数为非空),则不会触发该错误。从技术上讲,返回零结果不是错误状态。如果需要查找,请使用If($res->num\u rows>0)
注意,此处不需要调用data\u seek(0)
,因为您当时没有在$res
中提升记录集指针。你可以完全省略这一行,从query()
到fetch\u assoc()
(在测试query()中的错误并检查num\u rows`如果需要的话)这并不能帮助我解决“为什么使用jquery时它不起作用”的问题。我求助于html5,因为我似乎可以得到可靠的响应。我将您的答案标记为最佳答案,因为您不遗余力地帮助我(多次重新编写代码)谢谢。
if ($res = $mysqli->query($query)){
//$res->data_seek(0);
if ($res->num_rows == 0){ // use if required
echo 'no data found!';
}
while ($row = $res->fetch_assoc()){
echo "sign: ". $row['Western Zodiac Description']."<br>";
echo " Birth Card: = " . $row['Birth Card'];
echo " : =" . $row['Birth Card Descripton']."<br>";
echo "Planetary Card =". $row['Planatray Card'];
echo " : ". $row['Planatary Card Description']."<br>";
echo " 2nd Planetary Card =". $row['2nd Planatray Card'];
echo ": " . $row['2nd Planatary Card Description']."<br>";
}
echo 'DEBUG OUTPUT <br>';
echo $estring."<br>";
echo $wstring;
$mysqli->close();
}else{
die($mysqli->error);
}