Atualização MySQL com uma matriz usando PHP

John Alexander:

Estou seriamente preso tentando passar uma atualização para um banco de dados MySQL com uma matriz usando PHP. Os dados são provenientes de um Reagir aplicativo usando PHP para a api. Atualmente eu sou incapaz de obter resultados refletidos no banco de dados.

Matriz de Reagir

{"updateArray":
[{"user_id":"1000005","harassment_val":true,"safety_val":null},
{"user_id":"1000006","harassment_val":1,"safety_val":null},
{"user_id":"1000007","harassment_val":0,"safety_val":null},
{"user_id":"1000008","harassment_val":0,"safety_val":null},
{"user_id":"1000009","harassment_val":0,"safety_val":null,},
{"user_id":"1000010","harassment_val":1,"safety_val":1},
{"user_id":"1000011","harassment_val":0,"safety_val":null},
{"user_id":"1000012","harassment_val":0,"safety_val":null}]
}

Atual Código PHP

<?php include 'DBConfig.php';

$con = new mysqli($HostName, $HostUser, $HostPass, $DatabaseName);
$json = file_get_contents('php://input');
$obj = json_decode($json,true); 
$update_array =  $obj['updateArray'];

// $update_array  is array obj from app
// $content is field harassment_val in array
// $id is user_id field array to be used as key
// users, name of table to be updated
// harassment_val is field in table to be updated
// user_id is field in table to be used as key


foreach ($update_array as $key => $users) {
    $content = intval($users->harassment_val);
    $id = intval($users->user_id);
    $sql = "UPDATE users SET harassment_val='$content' WHERE user_id='$id'";
    $result = mysqli_query($con,$sql);
    }
?>


Eu me deparei com mysqli_real_escape_string mas estou usando intval como verdadeiro deve retornar um número inteiro de 1, porém não tenho certeza sobre isso. Obrigado por qualquer ajuda.

Felicidades,

Barmar:

Desde que você tem truecomo o segundo argumento para json_decode(), você está recebendo arrays associativos, não objetos. Retirar esse argumento para que você possa usar $users->user_id.

Então você deve usar uma declaração preparada em vez de substituição de variáveis.

<?php include 'DBConfig.php';

$con = new mysqli($HostName, $HostUser, $HostPass, $DatabaseName);
$json = file_get_contents('php://input');
$obj = json_decode($json); 
$update_array =  $obj['updateArray'];


$sql = "UPDATE users SET harassment_val=? WHERE user_id=?";
$stmt = $con->prepare($sql);
$stmt->bind_param("ii", $content, $id);
foreach ($update_array as $key => $users) {
    $content = $users->harassment_val;
    $id = $users->user_id;
    $result = $stmt->execute();
    if (!$result) {
        echo "Error: $stmt->error <br>";
    }
}
?>

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=339483&siteId=1
Recomendado
Clasificación