Guardar cadena JSON en la base de datos MySQL

Tengo una cadena JSON conmigo

{"name":"jack","school":"colorado state","city":"NJ","id":null}

Necesito que se guarde en la base de datos. Cómo podría hacer esto ?

Mi código PHP (solo he establecido la conexión a MySQL, pero no puedo guardar los registros)

   <?php
    // the MySQL Connection
    mysql_connect("localhost", "username", "pwd") or die(mysql_error());
    mysql_select_db("studentdatabase") or die(mysql_error());

    // Insert statement

    mysql_query("INSERT INTO student
    (name, school,city) VALUES(------------------------- ) ") // (How to write this)
    or die(mysql_error());  


    echo "Data Inserted or failed";

    ?>

preguntado el 04 de julio de 12 a las 01:07

3 Respuestas

Usaremos json_decode documentación json_decode

¡También asegúrate de escapar! Así es como lo haría a continuación...

/* create a connection */
$mysqli = new mysqli("localhost", "root", null, "yourDatabase");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* let's say we're grabbing this from an HTTP GET or HTTP POST variable called jsonGiven... */
$jsonString = $_REQUEST['jsonGiven'];
/* but for the sake of an example let's just set the string here */
$jsonString = '{"name":"jack","school":"colorado state","city":"NJ","id":null}
';

/* use json_decode to create an array from json */
$jsonArray = json_decode($jsonString, true);

/* create a prepared statement */
if ($stmt = $mysqli->prepare('INSERT INTO test131 (name, school, city, id) VALUES (?,?,?,?)')) {

    /* bind parameters for markers */
    $stmt->bind_param("ssss", $jsonArray['name'], $jsonArray['school'], $jsonArray['city'], $jsonArray['id']);

    /* execute query */
    $stmt->execute();

    /* close statement */
    $stmt->close();
}

/* close connection */
$mysqli->close();

¡Espero que esto ayude!

Respondido 04 Jul 12, 01:07

no entiendo que jsonGiven es. Mi cadena JSON es esta {"name":"jack","school":"colorado state","city":"NJ","id":null}. Y no puedo leerlo desde mi código PHP. - Sharon Watinsan

jsonGiven sería el nombre del parámetro de ejemplo donde el valor es su cadena json. un ejemplo seria ejemplo.com/thisScript.php?jsonGiven={"nombre":"jack",etc..} - siete adrian

Este es un ejemplo para ayudarte

<?php
 $json = '{"name":"jack","school":"colorado state","city":"NJ","id":null}';// You can get it from database,or Request parameter like $_GET,$_POST or $_REQUEST or something :p
 $json_array = json_decode($json);

 echo $json_array["name"];
 echo $json_array["school"];
 echo $json_array["city"];
 echo $json_array["id"];
?>

Espero que esto ayude !

Respondido 04 Jul 12, 08:07

Decodifique en una matriz y páselo en su mysql_query, el código a continuación no usa mysql_real_escape_string ni ningún otro medio de seguridad, que debe implementar.

Suponga que $json es {"name":"jack","school":"colorado state","city":"NJ","id":null}

$json_array = json_decode($json);

Ahora tiene índices en una matriz php, como: $json_array['name']

mysql_query("INSERT INTO student (name, school,city) VALUES('".$json_array['name']."', '".$json_array['school']."', '".$json_array['city']."') ") or die(mysql_error());  

Respondido 04 Jul 12, 01:07

En mi consola Firebug, estoy publicando {"name":"jack","school":"colorado state","city":"NJ","id":null} Entonces, ¿cómo obtengo este valor y lo guardo en $json como se muestra en su código? - Sharon Watinsan

a que te refieres con escapar lo siento, soy nuevo en PHP - Sharon Watinsan

¿Cómo recibo la cadena JSON para $json ? - Sharon Watinsan

Pensé que ya lo tenías, si dices que se muestra en tu consola Firebug, ¿aparece desde dónde? ¿Quién lo crea? Explíquelo para que pueda ayudarlo a convertirlo en $json. - André Catita

¿Qué sucede si su información json proviene de un formulario? ¿Cómo lo codificarías? - ken gordon

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.