PHP Предупреждение: недопустимое смещение строки '' при итерации по массиву - PullRequest
0 голосов
/ 02 мая 2020

Я получаю сообщение об ошибке «Предупреждение: смещение недопустимой строки» при попытке выполнить итерацию по массиву.

Мой результат после использования var_dump ---> array (19) {["id"] => int (1) ["handle"] => string (4) "test" ["blockname"] => string (0) "" ["project"] => string (0) "" ["document_description"] = > string (4) "test" ["project_id"] => string (0) "" ["revision"] => string (0) "" ["scale"] => string (0) "" ["document_num "] => string (9)" test-1557 "[" drawn_by "] => string (0)" "["mitted_by"] => string (0) "" ["checked_by"] => строка (0) "" [".Did_by "] => string (0)" "[" drawn_date "] => string (0)" "["mitted_date"] => string (0) "" ["checked_date"] => строка ( 0) "" ["отпускная_дата"] => строка (0) "" ["цель"] => строка (0) "" ["заметки"] => строка (0) ""}

Итак, я предполагаю, что это на самом деле массив?

И затем я также проверяю, является ли он массивом перед запуском l oop. Ошибка повторяется столько раз, сколько я ожидаю, что l oop запустится, так что, похоже, он «повторяется». Я просто не получаю ожидаемого результата.

Мой код

$titles = $titleBlockLib->search($_POST['document_description']);

      ?>
      <h1>LFFN Data</h1>
        <input type="button" value="Add Row" onclick="titleBlock.addEdit()"/>
        <form onsubmit="titleBlock.search()">
        <label for="search">Search:</label>
          <input id = "search" type="text">
          <input id = "submit" type="submit" value="Search">
        </form>

    <?php
      var_dump($titles);
        if (is_array($titles)) {
            echo "<table class='zebra'>
            <tr><td>Handle</td><td>Description</td><td>Document Number</td><tr>";
            foreach ($titles as $t) {
                printf("<tr><td>%s</td><td>%s<td>%s</td><td class='right'>"
                  . "<input type='button' value='Delete' onclick='titleBlock.del(%u)'>"
                  . "<input type='button' value='Edit' onclick='titleBlock.addEdit(%u)'>"
                  . "</td></tr>", 
                  $t['handle'], $t['document_description'], $t['document_num'],
                  $t['id'], $t['id']
                );
              }
              echo "</table>";
            } else {
              echo "<div>No data found.</div>";
            }
            break;

На всякий случай - функция, которая вызывает мой оператор SQL, выглядит следующим образом ->

function search($document_description){
    $sql = "SELECT * FROM `lffntitleblock` WHERE document_description LIKE '%".$document_description."%'";
    $this->stmt = $this->pdo->prepare($sql);
    $this->stmt->execute();
    $entry = $this->stmt->fetchAll();
    return count($entry)==0 ? false : $entry[0] ;

}

1 Ответ

0 голосов
/ 06 мая 2020

Нашел ответ ..

Мой оператор sql возвращался ..

count($entry)==0 ? false : $entry[0] ;

Который был логическим. После удаления этого оператора и возврата $this->stmt->fetchAll(); проблема была решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...