PHP-скрипт вставки данных в БД возвращает успешное выполнение, но запись не вставлена в БД?

0

сильный текст Ниже приведен код, используемый для вставки записи в базу данных. Сценарий выполняется, когда запись не вставлена в базу данных, но скрипт php запускается без каких-либо сбоев. Пожалуйста, помогите мне с этим.

<?php
$servername = "xxx.xx.x.xxx";
$username = "usr";
$password = "pwd";
$dbname = "Dbname";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
}

$postdata = json_decode(file_get_contents('php://input'), true);
$tablename = "tablename";
function guidv4($data)
{
    assert(strlen($data) == 16);

    $data[6] = chr(ord($data[6]) & 0x0f | 0x40); // set version to 0100
    $data[8] = chr(ord($data[8]) & 0x3f | 0x80); // set bits 6-7 to 10

    return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
} 
if(is_array($postdata)){

    $sql = "INSERT INTO ".$tablename." (id, ssid, address, lat, lng, state, country, city, cat, subcat, sname, createdAt,pincode) VALUES ";

    $valuesArr = array();
    foreach($postdata as $row){
                    //$loc = explode(", ", $row['loc']);
                    //$lat = mysqli_real_escape_string($conn, $loc[0]);
                    //$lng = mysqli_real_escape_string($conn, $loc[1]);         
                    $id = guidv4(random_bytes(16));
                    //$id = mysqli_real_escape_string($conn, $row['id']);
                    $ssid = mysqli_real_escape_string($conn, $row['sname']);
                    $address = mysqli_real_escape_string($conn, $row['address']);                   
                    $lat = mysqli_real_escape_string($conn, $row['lat']);
                    $lng = mysqli_real_escape_string($conn, $row['lng']);
                    $state = mysqli_real_escape_string($conn, $row['state']);
                    $country = mysqli_real_escape_string($conn, "India");
                    $city = mysqli_real_escape_string($conn, $row['city']);
                    $cat = mysqli_real_escape_string($conn, $row['cat']);
                    $subcat = mysqli_real_escape_string($conn, $row['subcat']);
                    $sname = mysqli_real_escape_string($conn, $row['sname']);
                    $createdAt = mysqli_real_escape_string($conn, $row['createdAt']);
                    $pincode = mysqli_real_escape_string($conn, $row['pincode']);                   
                    $valuesArr[] = "('$id', '$ssid', '$address', '$lat', '$lng', '$state', '$country', '$city', '$cat', '$subcat', '$sname', '$createdAt','pincode')";


    }

    $sql .= implode(',', $valuesArr);

    $conn->query($sql) or exit(mysql_error()); 
}



$conn->close();
?>
Теги:
apache2
phpmyadmin

1 ответ

1
Лучший ответ

Кажется, что элементы массива $ valuesArr не конкатенируются правильно

Вы должны отделить переменные PHP от текста, используя оператор конкатенации ".", Например:

  $valuesArr[] = "('" . $id ."', '" .$ssid . "', '" . $address ."', '" . $lat ."', '" . $lng . "', '" $state . "', '" . $country . "', '" . $city . "', '" . $cat . "', '" . $subcat ."', '" . $sname . "', '" . $createdAt . "','pincode')";

Ещё вопросы

Сообщество Overcoder
Наверх
Меню