Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php $\u POST未正确传递到mysqli查询(无错误,我看到我的值已传递,但不会绑定)_Php_Mysql_Mysqli - Fatal编程技术网

Php $\u POST未正确传递到mysqli查询(无错误,我看到我的值已传递,但不会绑定)

Php $\u POST未正确传递到mysqli查询(无错误,我看到我的值已传递,但不会绑定),php,mysql,mysqli,Php,Mysql,Mysqli,好的,我有一个非常简单的表单,它在我的db表中查找值。我还没有完全完成它,在我想使用Jquery日期选择器之前,我一直在努力工作(我希望能够在一大组定制的年份内轻松地进行选择) 由于我自己的原因,数据库中的表不使用总日期值,因此我将该值拆分为字符串进行查找(html5可以正常工作,但jquery似乎无法正常工作) 现在,我的代码中出现了“调用非对象上的成员函数data_seek()”。我已经将其拆开并尝试修复了几个小时,我恳请您的帮助,以便社区: 以下是PHP代码: <?php $

好的,我有一个非常简单的表单,它在我的db表中查找值。我还没有完全完成它,在我想使用Jquery日期选择器之前,我一直在努力工作(我希望能够在一大组定制的年份内轻松地进行选择)

由于我自己的原因,数据库中的表不使用总日期值,因此我将该值拆分为字符串进行查找(html5可以正常工作,但jquery似乎无法正常工作)

现在,我的代码中出现了“调用非对象上的成员函数data_seek()”。我已经将其拆开并尝试修复了几个小时,我恳请您的帮助,以便社区:

以下是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);
}