Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pobieranie danych za pomocą Jquery, AJAX i PHP z bazy danych MySQL

Przede wszystkim gorąco polecam użycie obiektu JS dla zmiennej data w żądaniach ajax. To znacznie uprości Twoje życie, gdy będziesz mieć dużo danych. Na przykład:

$('h1').click(function() {
            $.ajax({
                type:"POST",
                url: "ajax.php",
                data: { "code": code },
                datatype: "xml",
                success: function() {
                $(xml).find('site').each(function(){
                    //do something
                });
            });
        });

Jeśli chodzi o pobieranie informacji z serwera, najpierw będziesz musiał zrobić skrypt PHP, który wyciągnie dane z bazy. Jeśli zakładasz, że otrzymujesz dużo informacji z serwera, możesz dodatkowo zserializować swoje dane w formacie XML lub JSON (polecam JSON).

W twoim przykładzie założę, że twoja tabela db jest bardzo mała i prosta. Dostępne kolumny to id, kod i opis. Jeśli chcesz pobrać wszystkie opisy newsów dla konkretnego kodu, Twój PHP może wyglądać tak. (Od jakiegoś czasu nie robiłem żadnego PHP, więc składnia może być nieprawidłowa)

// create data-structure to handle the db info
// this will also make your code more maintainable
// since OOP is, well just a good practice
class NewsDB {
    private $id = null;
    var $code = null;
    var $description = null;

    function setID($id) {
        $this->id = $id;
    }
    function setCode($code) {
        $this->code = $code;
    }
    function setDescription($desc) {
        $this->description = $desc;
    }
}

// now you want to get all the info from the db
$data_array = array(); // will store the array of the results
$data = null; // temporary var to store info to

// make sure to make this line MUCH more secure since this can allow SQL attacks
$code = htmlspecialchars(trim($_POST['lname']));

// query
$sql = "select * from news where code=$code";
$query = mysql_query(mysql_real_escape_string($sql)) or reportSQLerror($sql);

// get the data
while ($result = mysql_fetch_assoc($query)) {
    $data = new NewsDB();
    $data.setID($result['id']);
    $data.setCode($result['code']);
    $data.setDescription($result['description']);
    // append data to the array
    array_push($data_array, $data);
}

// at this point you got all the data into an array
// so you can return this to the client (in ajax request)
header('Content-type: application/json');
echo json_encode($data_array);

Przykładowe wyjście:

[
  { "code": 5, "description": "desc of 5" },
  { "code": 6, "description": "desc of 6" },
  ...
]

Na tym etapie będziesz miał skrypt PHP, który zwraca dane w formacie JSON. Załóżmy również, że adres URL do tego skryptu PHP to foo.php .

Następnie możesz po prostu otrzymać odpowiedź z serwera przez:

$('h1').click(function() {
            $.ajax({
                type:"POST",
                url: "foo.php",
                datatype: "json",
                success: function(data, textStatus, xhr) {
                   data = JSON.parse(xhr.responseText);
                   // do something with data
                   for (var i = 0, len = data.length; i < len; i++) {
                       var code = data[i].code;
                       var desc = data[i].description;
                       // do something
                   }
            });
         });

To wszystko.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skorelowane podzapytanie MySQL w składni JOIN

  2. przesyłanie plików php, jak ograniczyć typ przesyłania plików

  3. MySQL SHA() nie działa

  4. PHP – Nieprawidłowe dane POST wysyłane przez formularz po echu?

  5. Podział na strony MySQL bez podwójnego zapytania?