【问题标题】:Fetching data using PDO使用 PDO 获取数据
【发布时间】:2018-10-20 06:48:51
【问题描述】:

我有 <table> 显示数据。我有一个按钮,如果我点击,数据将显示在#datacontainer。但问题是“错误:需要参数 1”我不知道这是什么意思。请帮我解决这个问题

这是我的代码

HTML - 这是表格,假设我的表格中有 4 个数据,然后当我单击按钮时,#datacontainer 将与数据一起显示。

  <table>
  <tr>
    <th width="15%;">Image</th>
    <th width="0">ID</th>
    <th width="50%;">Name</th>
    <th>Action</th>
  </tr>

 <?php while ($row = mysqli_fetch_array($accounts)) { ?>

    <tr>
    <td><img src="images/<?php echo $row['image']; ?>"></td>
    <td><input type="hidden" id="text_id" value="<?php echo $row['id']; ?>"></td>
    <td><?php echo $row['lastname']; ?>, <?php echo $row['firstname']; ?></td>
    <td>
        <i class="fab fa-reddit-alien" id="showdatacontainer" onclick="return chk()"></i>
        <i class="far fa-edit"  style="margin: 0 7% 0 7%;"></i>
        <i class="fas fa-trash"></i>
    </td>
    </tr>
  <?php } ?>
</table>
<div id="datacontainer"></div>

这是我的脚本

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
function chk()
{

var id = document.getElementById('text_id').value;
var dataString = ':id='+ id;
$.ajax({
  type: "post",
  url: "showdata.php",
  data:dataString,
  cache:false,
  success: function(data){
    $("#datacontainer").html(data);
    $("#datacontainer").slideToggle(300);
  }
});
return false;

}

这是我单击按钮时所说的 PHP。错误显示"Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result"请帮我解决这个问题。我真的不知道这是什么问题。谢谢你

    <?php 
$db = mysqli_connect('localhost', 'root', '', 'psbr');

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

    $id = $_POST['id']; 
    $accountsdata = mysqli_query($db, "SELECT * FROM accounts where id=:id");
    $statement = $db->prepare($accountsdata);
    $statement->bindParam(":id", $id);
    $statement->execute();
    $data = $statement->fetchAll(PDO::FETCH_ARRAY);
    }
 ?>

 <table>
    <tr>
        <td class="w"><h1>Name</h1></td>
    </tr>
     <?php while ($row = mysqli_fetch_array($data)) { ?>
    <tr>
        <td><?php echo $val['lastname']; ?></td>
    </tr>
    <?php } ?>
 </table>

【问题讨论】:

  • 您似乎在混合使用 PDO 和 MySQLi。只使用一个,而不是两个
  • 我该怎么办? @菲尔
  • 只使用一个,而不是两个
  • 另外,':id='+ id 不是有效的 application/x-www-form-urlencoded 字符串。尝试只使用一个对象,例如data: {id: id}
  • 另外,你不想使用mysqli_query,因为你的 SQL 有参数。尽管如此,MySQLi 不支持命名参数,只支持位置参数。您的代码中确实存在很多问题,因此我建议您从一些简单的教程开始。试试这个~phpdelusions.net/pdo

标签: php jquery pdo


【解决方案1】:

你正在混合 mysqlipdo 看这里:

</tr>
     <?php while ($row = mysqli_fetch_array($data)) { ?>
<tr>

你需要改变:

 <table>
    <tr>
        <td class="w"><h1>Name</h1></td>
    </tr>
     <?php while ($row = mysqli_fetch_array($data)) { ?>
    <tr>
        <td><?php echo $val['lastname']; ?></td>
    </tr>
    <?php } ?>
 </table>

与:

 <table>
    <tr>
        <td class="w"><h1>Name</h1></td>
    </tr>
     <?php foreach ($data as $val) { ?>
    <tr>
        <td><?php echo $val['lastname']; ?></td>
    </tr>
    <?php } ?>
 </table>

您在 ajax 代码中传递了错误的 dataString

变化:

var id = document.getElementById('text_id').value;
var dataString = ':id='+ id;
$.ajax({
  type: "post",
  url: "showdata.php",
  data:dataString,
  cache:false,
  success: function(data){
    $("#datacontainer").html(data);
    $("#datacontainer").slideToggle(300);

var id = document.getElementById('text_id').value;
$.ajax({
    type: "post",
    url: "showdata.php",
    data:{'id':id},
    cache:false,
    success: function(data){
    $("#datacontainer").html(data);
    $("#datacontainer").slideToggle(300);

【讨论】:

    猜你喜欢
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    相关资源
    最近更新 更多