我正在尝试编写一个php代码,用phpmyadmin插入和更新mysql数据库中的值和行,对现有行的更新可以正常工作,但insert不起作用。为了给您一些上下文,deviceid是主键,如果数据库中还不存在deviceid,则应该进行插入。
我认为问题在于比较if语句是返回空集还是返回结果。感谢您的帮助,提前谢谢!
警告:
警告:mysqli\u fetch\u array()期望参数1是mysqli\u result,字符串在第43行的c:\wamp\www\android\u connect\update.php中给出
第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条答案
按热度按时间zbdgwd5y1#
在必须建立与数据库的连接之前,您甚至没有执行查询。
piv4azn72#
这解决了问题:
56lgkhnf3#
使用