使用PDO获取数据

时间:2018-05-10 04:22:41

标签: php jquery pdo

我有显示数据的<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>

1 个答案:

答案 0 :(得分:0)

您正在混合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);