Параметр должен быть массивом или объектом, который реализует Countable в процессе. php в строке 45, есть проблема с "if (count ($ result) == 1)" - PullRequest
0 голосов
/ 14 февраля 2020
<?php

session_start();

$mysqli = new mysqli('localhost', 'root', '', 'crud') or die(mysqli_error($mysqli)); //Izveido savienojumu ar datubāzi

//default values
$id = 0;
$update = false;
$name = '';
$age = '';
$mobile = '';
$location = '';

if (isset($_POST['save'])){     //pārbauda vai ir nospiesta save poga
    $name = $_POST['name'];
    $age = $_POST['age'];
    $mobile = $_POST['mobile'];
    $location = $_POST['location'];

    $mysqli->query("INSERT INTO data (name, age, mobile, location) VALUES('$name', '$age', '$mobile', '$location')") or     //ievada datus datubāzē
        die($mysqli->error);

    $_SESSION['message'] = "Record has been saved!";    //iestata sesijas ziņojumu, ja dati tiek saglabāti
    $_SESSION['msg_type'] = "success";

    header('location: crud.php');       //novirza atpakaļ uz crud.php
}


if(isset($_GET['delete'])){     //pārbauda vai ir nospiesta delete poga
    $id = $_GET['delete'];
    $mysqli->query("DELETE FROM data WHERE id=$id") or die($mysqli->error());       //izdzēš datus no datubāzes

    $_SESSION['message'] = "Record has been deleted!";      //iestata sesijas ziņojumu, ja dati tiek izdzēsti
    $_SESSION['msg_type'] = "danger";

    header('location: crud.php');       //novirza atpakaļ uz crud.php
}

if(isset($_GET['edit'])){               //pārbauda vai ir nospiesta edit poga
    $id = $_GET['edit'];
    $update = true;
    $result = $mysqli->query("SELECT * FROM data WHERE id=$id") or die($mysqli->error());   //izvēlās datus no datubāzēs
   if(count($result)==1){                  //ja atrod ierakstu datubāzē
        $row = $result->fetch_array();      //atgriež datus no ieraksta
        $name = $row['name'];
        $age = $row['age'];
        $mobile = $row['mobile'];
        $location = $row['location'];
    }
}

if(isset($_POST['update'])){        //pārbauda vai ir nospiesta update poga
    $id = $_POST['id'];
    $name = $_POST['name'];
    $age = $_POST['age'];
    $mobile = $_POST['mobile'];
    $location = $_POST['location'];

    $mysqli->query("UPDATE data SET name='$name', age='$age', mobile='$mobile', location='$location' WHERE id=$id") or      //atjauno vecos datus uz jaunajiem ievadītajiem datiem
        die($mysqli->error);

   $_SESSION['message'] = "Record has been updated!";       //iestata sesijas ziņojumu, ja dati tiek atjaunotie
   $_SESSION['msg_type'] = "warning";

   header('location: crud.php');    //novirza atpakaļ uz crud.php
}
?>

Это говорит мне о том, что Параметр должен быть массивом или объектом, который реализует счетный процесс. php в строке 45, есть проблема с "if (count ($ result) == 1)", и Я не могу найти проблему по какой-то причине, вероятно, потому что я новичок. В любом случае, это CRUD - создание, чтение, обновление, удаление - и функция обновления / редактирования не работает, поэтому я застрял

1 Ответ

0 голосов
/ 14 февраля 2020

mysqli_query не вернет ничего, что можно сосчитать, но нет необходимости считать, просто чтобы увидеть, есть ли у вас результат или нет. Поскольку вы выбираете по идентификатору, вы сможете получить не более одной строки из запроса при условии, что идентификатор уникален.

Таким образом, вы можете просто проверить, что запрос выполнен успешно, а затем попытаться получить из него строку.

if ($result && $row = $result->fetch_array()) { ...

Если запрос не удался, $result будет false, и если он был успешным, но ничего не возвращал, то $row будет null .

...