SQL ifadeleri içinde PHP değişkenlerini kullanma?

4 Cevap php

Nedense ben bir mysql deyimi içinde bir var geçemez. Ben birden fazla tablo için kullanılabilecek bir işlevi var. Peki yerine kod tekrarı ben, bu yüzden gibi seçilir tabloyu değiştirmek istiyorum

function show_all_records($table_name) {

     mysql_query("SELECT * FROM $table_name");

etc, etc...

}

And to call the function I use show_all_records("some_table") or show_all_records("some_other_table")

Ben şu anda seçmek istediğiniz tablo bağlı. Değişkenler mysql tabloların geçti olamaz çünkü Ama işe yaramıyor, bu nedir?

4 Cevap

Eğer yapıştırılan kod çalışması gerekir. Olası nedenler şunlardır değildir:

  • Sen 'SELECT * FROM $table_name' (yerine çift tırnak tek tırnak) kullanıyorsanız
  • Sen yanlış $table_name

die("SELECT * FROM $table_name"); deneyin ve yanlış tam olarak ne göreceksiniz!

Denemek

$results = mysql_query("SELECT * FROM $table_name") or die(mysql_error());

ve diyor ne yaptığını anlat. Teoride $ tablo_adı içeride olduğu gibi ", bir dizge olarak çözümlenir" değil'' olmalı

Sorgunuz iyi görünüyor. Bu işe neden göremiyorum. Eğer mysql_connect () başka bir yerde kod düzgün DB bağlı mı? Bağlantı kurulan almak mı? Eğer gibi bağlantı konum kullanıcı erişmek için çalışıyoruz masaya SELECT izinleri var mı?

My recent experience with SQL, PHP, and MySQL showed me that I should write SQL statements like below to have them work, whether inside PHP scripts or from SQL interaction in phpMyAdmin. Otherwise my queries did not work. i just modify same code you have posted above to generalize a bit what i come up with. and give general rules that work.

kendisi veya değişken adını temsil eden veriler veri olduğunu temsil edip herhangi bir değer (kayıt değeri olmayan bir db, tablo veya sütun adı) tek tırnak sakının. i ' işareti demek. dil php de değişken kapsamları her zaman olduğu gibi kabul edilmelidir, bu başka bir şeydir.

function show_all_records($table_name) {

     mysql_query("SELECT `Username` FROM `$table_name` WHERE `Username` = 'edwin'");

etc, etc...

}

SQL benim sorguları genel olarak çalışmak için aşağıdaki sözdizimi kurallarına uygun olmalıdır keşfetti:

  1. Çift tırnak tüm SQL sorgusu. i " işareti demek.
  2. Tüm veritabanı adları ve tablo adları ve sütun adları (sütun isimleri yanı sıra, sigara alıntılanan bırakılabilir) backquote. i `(Macintosh üzerinde seçeneği + virgül) anlamına gelir.
  3. Tüm değerleri tek-Yap. i ' işareti demek.
  4. Üç kural ile ilgili yukarıda kendi değerleri için yapılması olacaktır aynı tırnak işareti ile değişkenleri alıntı.