PHP menulis kesalahan ini di log: "Pemberitahuan: Penggunaan konstanta tidak terdefinisi".
Kesalahan dalam log:
PHP Notice: Use of undefined constant department - assumed 'department' (line 5)
PHP Notice: Use of undefined constant name - assumed 'name' (line 6)
PHP Notice: Use of undefined constant email - assumed 'email' (line 7)
PHP Notice: Use of undefined constant message - assumed 'message' (line 8)
Baris kode yang relevan:
$department = mysql_real_escape_string($_POST[department]);
$name = mysql_real_escape_string($_POST[name]);
$email = mysql_real_escape_string($_POST[email]);
$message = mysql_real_escape_string($_POST[message]);
Apa artinya dan mengapa saya melihatnya?
Pesan kesalahan disebabkan oleh fakta yang tidak menguntungkan bahwa PHP secara implisit akan mendeklarasikan token yang tidak dikenal sebagai string konstan dengan nama yang sama.
Artinya, ia mencoba menafsirkan ini (perhatikan tanda kutip yang hilang):
Satu-satunya cara yang valid untuk sintaks yang valid dalam PHP adalah jika sebelumnya ada konstanta yang
department
didefinisikan. Sedihnya, daripada mati dengan kesalahan fatal pada saat ini, ia mengeluarkan Pemberitahuan ini dan bertindak seolah-olah sebuah konstanta didefinisikan dengan nama dan nilai yang sama:Ada berbagai cara Anda bisa mendapatkan pesan kesalahan ini, tetapi semuanya memiliki akar penyebab yang sama - token yang bisa berupa konstanta.
Kutipan string hilang:
$my_array[bad_key]
Inilah masalahnya dalam kasus Anda, dan itu karena Anda punya kunci larik string yang belum dikutip. Memperbaiki kunci string akan memperbaiki bug:
Perubahan:
Untuk:
Variabel tanda dolar hilang:
var_without_dollar
Alasan lain Anda mungkin melihat pesan kesalahan ini adalah jika Anda mengabaikan
$
variabel, atau$this->
dari anggota. Misalnya, salah satu dari yang berikut ini akan menyebabkan pesan kesalahan yang serupa:Karakter tidak valid dalam nama variabel:
$bad-variable-name
Masalah serupa namun lebih halus dapat terjadi jika Anda mencoba menggunakan karakter yang tidak diizinkan dalam nama variabel - tanda hubung (
-
) alih-alih garis bawah_
akan menjadi kasus umum.Misalnya, ini OK, karena garis bawah dibolehkan dalam nama variabel :
Tapi ini bukan:
Ini akan ditafsirkan sama dengan ini:
Mengacu pada konstanta kelas tanpa menentukan lingkup kelas
Untuk merujuk pada konstanta kelas, Anda perlu menentukan ruang lingkup kelas
::
, jika Anda melewatkannya, PHP akan berpikir Anda sedang berbicara tentang globaldefine()
.Misalnya:
Menggunakan konstanta yang tidak didefinisikan dalam versi PHP ini, atau didefinisikan dalam ekstensi yang tidak diinstal
Ada beberapa konstanta yang ditentukan sistem yang hanya ada di versi PHP yang lebih baru, misalnya konstanta opsi mode
round()
seperti yangPHP_ROUND_HALF_DOWN
hanya ada di PHP 5.3 atau lebih baru.Jadi jika Anda mencoba menggunakan fitur ini di PHP 5.2, katakan:
Anda akan menerima pesan kesalahan ini:
sumber
self::
bagian itu. Ini bekerja sekarang.Anda mungkin lupa menggunakan
""
.Sebagai contoh:
mengubah:
sumber
Anda melewatkan menempatkan tanda kutip tunggal di sekitar kunci array Anda:
seharusnya:
sumber
Cara yang benar menggunakan variabel posting adalah
Gunakan satu kutip (')
sumber
sumber
Masukkan tanda kutip tunggal.
Contoh
sumber
Saya tidak yakin apakah ada perbedaan saya menggunakan kode penyala dan saya menggunakan "" untuk nama-nama dan itu bekerja dengan baik.
salam,
Jorge.
sumber
Sepertinya konstanta pengambilan yang telah ditentukan hilang dengan ekstensi MySQL, jadi kita perlu menambahkannya sebelum fungsi pertama ...
// konstanta ambil yang ditentukan sebelumnya
Saya diuji dan berhasil.
sumber