php - mysqli_fetch_array () ожидает, что параметр 1 будет mysqli_result, задана строка - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь написать код PHP, который вставляет и обновляет значения и строки в базе данных mySQL с помощью phpmyadmin, обновление существующей строки работает нормально, но вставка не работает.Чтобы дать вам некоторый контекст, deviceID является первичным ключом, если deviceId еще не существует в базе данных, необходимо сделать INSERT.

Я думаю, что проблема заключается в сравнении того, возвращает ли оператор if пустой набор или результат.Будем признательны за помощь, заранее спасибо!

Предупреждение:

Предупреждение: mysqli_fetch_array () ожидает, что параметр 1 будет mysqli_result, строка указана в C: \wamp \ www \ android_connect \ update.php на линии 43

строка 43: $arr = mysqli_fetch_array($query);

Здесьэто код php:

if ($_SERVER ["REQUEST_METHOD"]=="POST"){
require'connectiontest.php';
createStudent();
}

$response = array();

function createstudent()
{

// check for required fields
if (isset($_POST['deviceId']) && isset($_POST['buildingId']) && 
isset($_POST['levelId']) && isset($_POST['floorplanId']) && 
isset($_POST['latitude']) && isset($_POST['longitude'])
&& isset($_POST['x']) && isset($_POST['y']) && isset($_POST['i']) && i 
sset($_POST['j']) && isset($_POST['heading']) 
&& isset($_POST['probability']) && isset($_POST['roundtrip'])) {
// extract data from POST into variables
global $connect;

<?php


$deviceId = $_POST['deviceId'];
$buildingId = $_POST['buildingId'];
$levelId = $_POST['levelId'];
$floorplanId = $_POST['floorplanId'];
$latitude = $_POST['latitude'];
$longitude = $_POST['longitude'];
$x = $_POST['x'];
$y = $_POST['y'];
$i = $_POST['i'];
$j = $_POST['j'];  
$heading = $_POST['heading'];
$probability = $_POST['probability'];
$roundtrip = $_POST['roundtrip'];
$query = "SELECT * FROM devicelocations WHERE deviceId = '$deviceId';";
$arr = mysqli_fetch_array($query);

if (sizeof($arr) == 1) {
    error_log("Database is empty, doing an INSERT.", 0);
$query = "INSERT INTO devicelocations (deviceId, buildingId, levelId, floorplanId, latitude, longitude, x, y, i, j, heading, probability, roundtrip) VALUES ('$deviceId', '$buildingId', '$levelId', '$floorplanId', '$latitude', '$longitude', '$x', '$y', '$i', '$j', '$heading', '$probability', '$roundtrip');";}

else {
    error_log("Database already has that deviceId, doing an UPDATE.", 0);
    $query = "UPDATE devicelocations SET buildingId = '$buildingId', levelId = '$levelId', floorplanId = '$floorplanId', latitude = '$latitude', longitude = '$longitude', x = '$x', y = '$y', i = '$i', j = '$j', heading = '$heading', probability = '$probability', roundtrip = '$roundtrip' WHERE deviceId = '$deviceId';";}

mysqli_query($connect, $query) or die (mysqli_error($connect));
mysqli_close($connect);



// check if row inserted or not
if ($query) {
    // successfully inserted into database
    $response["success"] = 1;
    $response["message"] = "Entry successfully inserted or updated.";

    // echoing JSON response
    echo json_encode($response);
} else {
    // failed to insert row
    $response["success"] = 0;
    $response["message"] = "Entry was not successfully inserted or updated.";

    // echoing JSON response
    echo json_encode($response);
}
}  else {
// required field is missing
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";

// echoing JSON response
echo json_encode($response);
}

}

?>

Ответы [ 3 ]

0 голосов
/ 15 мая 2018

Вы даже не выполнили qx-запрос до того, как должно быть установлено соединение с базой данных .

$query = "SELECT * FROM devicelocations WHERE deviceId = '$deviceId';";
$result=mysqli_query($con,$query);//executing query


$arr = mysqli_fetch_array($result);


$con=mysqli_connect(ip,"username","password",database)

- это подключение к базе данных

0 голосов
/ 15 мая 2018

Это решило проблему:

$result=mysqli_query($connect,$query);
$count=mysqli_num_rows($result);
if($count>0) {
update query } else{
insert query }
0 голосов
/ 15 мая 2018

Использование

$count=mysqli_num_rows($your_query);  
if($count>0){    
   update query
}
else
{    
   insert query
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...