PHP dan MySQL tidak berkomunikasi

9

Saya sampai pada kesimpulan bahwa instalasi PHP dan instalasi MySQL saya tidak cocok; Saya sedang mengerjakan pembuatan halaman web pertama saya yang menggunakan MySQL untuk konten, tetapi setelah dua hari, halaman manual, dokumentasi online, dan puluhan tutorial, saya tidak bisa membuat bagian PHP / MySQL berfungsi. Saya memiliki server web rumah yang didirikan (saya adalah satu-satunya admin / pengguna) yang menjalankan Apache dan menghosting halaman web saya. Saya telah menginstal MySQL, dan dapat membuat dan meminta database melalui Terminal. Saya telah menginstal PHP, dan dapat menggunakan gema untuk mencetak teks ke dokumen. Ketika saya bekerja dengan MySQL, semuanya berubah ...

Saya memiliki halaman yang berisi hal-hal inisialisasi di. berisi beberapa paragraf dari kode HTML dan kemudian kode PHP untuk mengakses MySQL. Ketika saya pertama kali memuat halaman, semua yang dihasilkan adalah halaman kosong. Saya mengomentari bagian PHP dan memuat ulang untuk mengkonfirmasi bahwa HTML biasa masih berfungsi, dan ternyata berhasil. Oleh karena itu, beberapa bagian dari PHP menjaga agar halaman tidak pernah dimuat.

Untuk mulai memecahkan kode saya, saya meninggalkan semua kode PHP yang dikomentari kecuali kode berikut untuk koneksi server, yang diadaptasi dari beberapa tutorial berbeda:

<?
echo("<p>PHP is working</p>"); 
$ses = mysql_connect("localhost","username","password");
if(!$ses){
 echo("<p>Connection to content server failed.</p>");
 exit();
}
echo("<p>Database Connected</p>");
?>

Ketika halaman dimuat, HTML awal dimuat di samping sebuah paragraf bertuliskan "PHP berfungsi" tetapi tidak muncul pesan kegagalan atau pesan sukses. Saya menghapus struktur If dari kode - sehingga hanya dua gema dan mysql_connect tetap - dan mendapat hasil yang sama.

Tampaknya fitur mysql_connect menyebabkan server berhenti memuat kode ketika dijalankan, tetapi saya kehabisan ide untuk memperbaikinya. Sebagai catatan: Saya telah memodifikasi file php.ini untuk memasukkan baris "connection = msql.so", dan saya menggunakan MySQL 5.5, Apache 2.2.22, PHP 5.3.10, Ubuntu 12.04. Juga, baik router dan modem saya telah dikonfigurasikan untuk meneruskan port 3306 ke server - meskipun saya tidak melihat bagaimana hal itu diperlukan - dan nama pengguna dan kata sandi MySQL saya sudah tiga kali diperiksa dan identik dengan yang saya gunakan dengan sukses di Terminal.

Apa yang saya lewatkan?

Casey Hungler
sumber
1
Ganti 'nama pengguna' dan kata sandi dengan nama pengguna yang benar (mungkin root) dan kata sandi
Tachyons
2
Ya, saya melakukan itu. Saya hanya tidak berpikir itu akan menjadi ide yang baik untuk membuang nama pengguna dan kata sandi ke forum. Seperti yang saya katakan di akhir, saya telah memeriksa nama pengguna dan kata sandi BANYAK kali untuk memastikan bahwa itu cocok dengan apa yang saya gunakan untuk berhasil membuat, mengakses, dan mengedit database melalui Terminal.
Casey Hungler
Saya juga telah mencoba mengganti localhost dengan 127.0.0.1 serta alamat IP lokal dan global server, tetapi tidak ada yang membuat perbedaan juga.
Casey Hungler
1
Apakah Anda menginstal php5-mysql?
laurent
Saya cukup yakin, tetapi saya akan mencobanya lagi.
Casey Hungler

Jawaban:

9

Semuanya terlihat oke jadi saya pikir instalasi Anda tidak lengkap. Agar mysql dan php berkomunikasi, Anda perlu menginstal php5-mysql paket:

sudo apt-get install php5-mysql
laurent
sumber
NB: Saya harus me-restart komputer sebelum ini bekerja.
user124384
3

Instal php5-mysqlpaket dan gunakan mysqli_connect bukan mysql_connect

Tachyons
sumber
Terima kasih, orang lain juga menyarankan itu, dan itu berhasil! Saya ingin tahu, dalam pencarian saya, saya telah menemukan hal-hal tentang mysqli (dan PDO biasanya ada di sana juga), apa itu? Apa yang membuatnya lebih baik dari mysql biasa?
Casey Hungler
MySQLi adalah versi yang disempurnakan.
Burung hantu
Dari apa yang saya tahu, Anda harus menggunakan mysqli seperti yang direkomendasikan oleh tim php dan mysql_connect tidak lagi dalam pengembangan, hanya pemeliharaan. Saya pikir mysql_connect tidak menerima pernyataan yang disiapkan misalnya dan banyak hal lainnya.
laurent
1
sudo apt-get install php5-mysql

Temukan versi Tomcat dari /etc/init.d/. Seharusnya ada file dengan nama tomcat7, maka 7 adalah versinya

sudo service tomcat7 stop 
sudo service tomcat7 start

Terkadang mesin reboot membantu dalam menyortir masalah lain. Setelah reboot, jangan lupa untuk menjalankan:

sudo service tomcat7 start 
pengguna144880
sumber