mysql tablosu parametreleri ve sipariş sorguları hazırlanmış

2 Cevap php

Ben bir kategori içine anda görüntülenen kaydı yerleştirmek için amaç olan bir form var. Ben bunu php aracılığıyla aşağıdaki html kodu kullanıyorum:

<form name="categoryForm">
  <input name="radiobutton" type="radio" value="fakeapproved" />Fake (Approved)<p>
  <input name="radiobutton" type="radio" value="fakesuspected" />Fake (Suspected)<p>
  <input name="radiobutton" type="radio" value="keyword" />Forbidden Keywords<p>
  <input name="radiobutton" type="radio" value="parallelimport" />Parallel Imports
  <input name="Submit" type="submit" value="Update" onclick="handleClick(".$pk.");return false"/>
</form>

Şu anda, ben sadece bir kategori sütunu ile, bir İHALELERİ tablo var ve bu sütun benim formunda tanımlanan kategorilerden birine ayarlanır.

Bu yaklaşım ben veri ile yapmanız gerekenler için etkili değildir, bu yüzden doğru ya da yanlış ayarlanmış olabilir, her kategori için ayrı bir sütun var, bunu değiştirmek için planlıyorum.

O benim formunda tanımlanan ve benim sql sorgusunda, benim javascript fonksiyonu ile elde edilen metin kullanmak mümkün olup olmadığını bilmek istiyorum, ne olduğunu.

Örneğin, güncelleme ihaleleri gerçek = $ textfromfrom set

Şu anda, ben aşağıdaki hazırlanmış deyimi kullanıyorum:

if($cmd=="addcat"){
  $alterQuery = "UPDATE auctions SET category = ? WHERE article_no= ?";
  if ($altRecord = $con->prepare($alterQuery)) {
    $altRecord->bind_param("ss", $subcat, $pk);
    $altRecord->execute();
    $altRecord->close();
    echo "true";
  } else {
    echo "false";
  }
}

Değiştirmek için bir yolu var mı

$alterQuery = "UPDATE auctions SET category = ? WHERE article_no= ?";

with $alterQuery = "UPDATE auctions SET ? = true WHERE article_no= ?";

O da düz sonra ayrı bir sorgu çalıştırmak mümkün olacağını, yani:

if($cmd=="addcat"){
  $alterQuery = "UPDATE auctions SET ? = true WHERE article_no= ?";
  $insertQuery = "INSERT into users (username, ?) values ?, true";
  if ($altRecord = $con->prepare($alterQuery)) {
    $altRecord->bind_param("ss", $category, $pk);
    $altRecord->execute();
  if ($insRecord = $con->prepare($insertQuery)) {
    $insRecord->bind_param("ss", $category, $username);
    $insRecord->execute();
    $insRecord->close();
  }
  $altRecord->close();
  echo "true";
} else {
  echo "false";
}

Aşağıdaki gibi yukarıdaki yaklaşımı kullanarak benim mantıktır:

Ihaleleri veritabanı başka bir kaynaktan ithal edilir ve sonuna kadar üzerinde kategoriler eklemek dışında ben, tüm yapısını değiştiremezsiniz. İlköğretim tuşları ve böyle değiştirilmemelidir.

Sadece 4 kategori vardır

Bireyin açık artırma birden fazla kategoriye ait olabilir

Ihaleleri tablo sadece ihaleleri ile ilgilenir. Ben öncelikle yeni kullanıcı girişi oluşacak, bir kullanıcılar tablo gerekir.

Kullanıcıların tablo, her kullanıcı, onlar içeri ihaleleri vardı kategorilerde göstermek gerekir

Kullanıcı başına kullanıcı tabloda birden fazla kayıt var olmamalıdır. Adı birincil anahtar olarak işlev görecektir.

2 Cevap

$ AlterQuery = "? GÜNCELLEME ihaleleri = true NEREDE article_no = SET";

Hayır, sütun adları için sorgu parametreleri kullanamazsınız. Sorgu parametreler bir SQL ifadede değişmez bir değer yerine only kullanılabilir.

Siz dinamik SQL kullanmak gerekecek. Bu bir dize olarak bir SQL deyimi oluşturmak ve sütun adları gibi bu dizeye uygulama değişkenleri interpolate vardır.

Eyvah, ne hakkında burada klasik veritabanı denormalizasyon. Bunu yapmak istemiyorum. Sen want ihaleleri ve tip arasında bir birçok ilişki oluşturmak, bu olması gerekir gibi görünüyor gibi, bir tek sütun ya onu tutmak, ya da. Yanlış bir şey olduğunu ilk işareti yapmak için çalışıyoruz ne yapmak hiç de kolay bir yol var olmasıdır.

Daha iyi bir yaklaşım, bir açık artırma tablo oluşturmak için, ve bir categoryAuctionForm tablo olurdu ...

Bu gibi görünecektir:

auctions Table:
auction_id 
---------
0
1
2
3

auctions Type:
auction_type_id auction_id auction_type
1               0          something
2               0          othertype
3               0          fake
4               1          othertype
5               2          fake
6               3          fake

Ayrıca böyle bir auction_type sütunu oluşturma gibi normalleşme daha düzeyleri ekleyebilirsiniz.

Sadece benim düşünce.