Berdasarkan komentar, sepertinya masalahnya disebabkan oleh penggunaan require_once()
di dalam suatu fungsi.
Satu dari dua hal sedang terjadi. Atau:
-
Anda telah menyertakan
Connection.php
di tempat lain, jadi ketika Anda masuk ke fungsi, itu sebenarnya tidak disertakan.. karena sekali bagian darirequire_once
.atau...
-
Ini adalah berfungsi saat pertama kali Anda memanggil fungsi tersebut, tetapi saat Anda memanggilnya untuk kedua kalinya, file telah disertakan dan tidak disertakan lagi.
Masalahnya adalah ketika file pertama kali disertakan (dengan asumsi itu dari dalam fungsi ini), $connection
variabel dibuat dalam lingkup fungsi, dan seperti variabel fungsi lainnya, hilang di akhir fungsi. Saat Anda memanggil fungsi untuk kedua kalinya, penyertaan tidak terjadi karena Anda menggunakan require_once
.
Anda mungkin dapat memperbaikinya dengan memanggil require()
bukannya require_once()
, tetapi itu akan menghubungkan kembali ke database setiap kali Anda memanggil fungsi - yang merupakan banyak overhead yang tidak perlu. Jauh lebih bersih untuk hanya memindahkan penyertaan di luar fungsi, dan meneruskan koneksi ke dalam fungsi, atau menggunakannya sebagai variabel global.
Itu akan terlihat seperti ini:
require_once('Connection.php');
function getResult() {
global $connection;
$findQuery = "SELECT * FROM `Keys` WHERE `ID` = '$gID'";
$findResult = mysql_query($findQuery, $connection) or die(mysql_error());
$resultRow = mysql_fetch_assoc($findResult) or die(mysql_error());
}
Semua yang dikatakan, ada 2 masalah utama dengan kode ini.
-
Anda menggunakan
mysql_*
fungsi yang tidak digunakan lagi dan akan segera dihapus dari versi baru PHP. Lihat pertanyaan ini untuk detail lebih lanjut:Mengapa harus 'bukankah saya menggunakan fungsi mysql_* di PHP?Sebenarnya tidak sulit untuk beralih ke sesuatu seperti
mysqli_*
sebagai gantinya - ada serangkaian fungsi non-objek yang hampir identik dengan yang Anda gunakan sekarang. -
Anda memasukkan variabel dalam kueri Anda tanpa menghindarinya dengan benar. Setidaknya Anda harus memanggil
mysql_real_escape_string()
(ataumysqli_real_escape_string()
), tetapi solusi yang lebih baik adalah dengan melihat ke dalam pernyataan yang sudah disiapkan. Anda dapat menemukan informasi lebih lanjut tentang pernyataan yang disiapkan di sini:Bagaimana saya bisa mencegah injeksi SQL di PHP?