PHP MySQL Güncelleme sorgusu

5 Cevap php

Ben bir güncelleştirme sorgusu olan bir web sitesi var. Örnek.

Table name -> myTable
Table Content -> id(AI)
                 name  --> myName
                 age   --> 13
                 image --> (no values)
                 birthdate  --> (no values)

I only put values in name and age. In image and birthdate, I haven't put anything.
If I edit it and update it and I don't put anything in name and in age, I only put values in image and in birthdate. The output is like this. (This ouput I wanted)

Table name -> myTable
Table Content -> id(AI)
                 name  --> myName
                 age   --> 13
                 image --> myImage.jpg
                 birthdate  --> Feb. 31, 2010


This is my code:

<?php
  //mysql connect...
  //mysql select database...
$sql = "UPDATE myTable SET name = '".$name."', age = '".$age."', image = '".$image."', birthdate"'$birthdate.."' WHERE id = $id";
mysql_query($sql);
?>

Ben bu kodu kullanılan ancak çıktı:

Table name -> myTable
Table Content -> id(AI)
                 name  --> (no values)
                 age   --> (no values)
                 image --> myImage.jpg
                 birthdate  --> Feb. 31, 2010


Feel free to ask if you don't understand my question
Thank you

5 Cevap

UPDATE sizin UPDATE açıklamada yeni değerler dahil yoksa onlar gibi sütunları bırakır.

Yani kullanıcının girdiği ne inceler bazı koşullu kod ile $sql değişkeni kurmak gerekebilir, ve kullanıcı bunun için bir değer verdi ise o sadece bir sütun bulunmaktadır.

<?php

$columns = array("name", "age", "image", "birthdate");
$set = array();
foreach ($columns as $col) {
    if (isset($_GET[$col])) {
      $set[] = "$col = '" . mysql_real_escape_string($_GET[$col]) . "'";
    }
}
$sql = "UPDATE myTable "
if ($set) {
    $sql .= " SET " . implode(",", $set);
}
$sql .= " WHERE id = " . (int) $id;

Eğer kodda bir hata var -

$sql = "UPDATE myTable SET name = '".$name."', age = '".$age."', image = '".$image."', birthdate"'$birthdate.."' WHERE id = $id"

okumalısınız:

$sql = "UPDATE myTable SET name = '".$name."', age = '".$age."', image = '".$image."', birthdate = '".$birthdate."' WHERE id = $id"

ama bu muhtemelen sadece bir yazım hatası var. Eğer değişkenleri doğru ayarlanmış alıyorsanız emin misiniz? Emin olmak için tüm değişkenler dışarı yankılanan sahipsiniz. Ayrıca, sütunlar varsayılan veri tanımı var kontrol edin.

Sadece iki ayrı sorgu var:

// update name and age
$sql = "UPDATE myTable SET name = '$name', age = '$age' WHERE id = '$id'";

// Update image and birthday
$sql = "UPDATE myTable SET image = '$image', birthdate = '$birthdate' WHERE id = '$id'";

O çift tırnak beri Ayrıca, sadece dize içindeki tüm değişkenleri koyabilirsiniz.

Bir alanı değiştirmek istemiyorsanız, güncelleştirme sorgusu eklemeyin.

Vb aşağı tiplemeleri söz konusu olduğunda Şahsen ben, bu gibi zı o güvenilir olmadığını düşünüyorum

Sana PDO veya bir şey denemek ve uygulamak öneririz.

http://php.net/manual/en/book.pdo.php

Othewise, hata birthdate'".$birthdate."' cadı olması ihtiyacı vardır birthdate = '".$birthdate."'