Выборка данных с использованием PDO - PullRequest
0 голосов
/ 10 мая 2018

У меня есть <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", пожалуйста, помогите мне выйти из этой проблемы. Я действительно не знаю, в чем проблема. Thankyou

    <?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 голосов
/ 10 мая 2018

вы смешиваете mysqli и pdo см. Здесь:

</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>

И вы неправильно указали dataString в своем коде ajax.

Изменение:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...