PHP และ MySQL ไม่สื่อสาร


9

ฉันได้ข้อสรุปว่าการติดตั้ง PHP และการติดตั้ง MySQL ของฉันยังไม่เสร็จ ฉันกำลังทำงานเพื่อสร้างหน้าแรกของฉันที่ใช้ MySQL สำหรับเนื้อหา แต่หลังจากผ่านไปสองวันหน้าคนเอกสารออนไลน์และแบบฝึกหัดหลายสิบฉันก็ไม่สามารถทำให้ PHP / MySQL ทำงานได้ ฉันมีเว็บเซิร์ฟเวอร์ในบ้านที่จัดตั้งขึ้น (ฉันเป็นผู้ดูแลระบบ / ผู้ใช้คนเดียว) ที่รัน Apache และโฮสต์เว็บเพจของฉัน ฉันติดตั้ง MySQL และสามารถสร้างและสืบค้นฐานข้อมูลผ่านทางเทอร์มินัล ฉันติดตั้ง PHP แล้วและสามารถใช้ echo เพื่อพิมพ์ข้อความลงในเอกสาร เมื่อฉันทำงานกับ MySQL ทุกอย่างเปลี่ยนไป ...

ฉันมีหน้าเว็บที่มีการเริ่มต้นสิ่งต่าง ๆ มี hardcoded HTML สองสามย่อหน้าและรหัส PHP เพื่อเข้าถึง MySQL เมื่อฉันโหลดหน้าครั้งแรกสิ่งที่ได้คือหน้าว่าง ฉันแสดงความคิดเห็นในส่วนของ PHP และโหลดใหม่เพื่อยืนยันว่า HTML ธรรมดายังคงใช้งานได้ ดังนั้นบางส่วนของ PHP ทำให้หน้าเว็บไม่เคยโหลด

ในการเริ่มต้นแก้ไขปัญหารหัสของฉันฉันปล่อยให้ทุกรหัส PHP แสดงความคิดเห็นยกเว้นรหัสต่อไปนี้สำหรับการเชื่อมต่อเซิร์ฟเวอร์ซึ่งถูกดัดแปลงจากบทเรียนที่แตกต่างกัน:

<?
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>");
?>

เมื่อโหลดเพจ HTML เริ่มต้นจะโหลดเพิ่มเติมจากย่อหน้าที่อ่านว่า "PHP กำลังทำงาน" แต่ไม่มีข้อความล้มเหลวหรือข้อความยืนยันความสำเร็จปรากฏขึ้น ฉันลบโครงสร้าง If ออกจากรหัส - เพื่อให้มีเพียงสอง echos และ mysql_connect ที่ยังคงอยู่ - และได้ผลลัพธ์เดียวกัน

ดูเหมือนว่าคุณสมบัติ mysql_connect เป็นสาเหตุให้เซิร์ฟเวอร์หยุดโหลดรหัสเมื่อมีการเรียกใช้ แต่ฉันไม่มีแนวคิดในการแก้ไข สำหรับเร็กคอร์ด: ฉันได้แก้ไขไฟล์ php.ini เพื่อรวมบรรทัด“ connection = msql.so” และฉันใช้ MySQL 5.5, Apache 2.2.22, PHP 5.3.10, Ubuntu 12.04 ทั้งเราเตอร์และโมเด็มของฉันได้รับการกำหนดค่าให้ส่งต่อพอร์ต 3306 ไปยังเซิร์ฟเวอร์ - แม้ว่าฉันไม่เห็นว่าควรจะทำอย่างไร - และชื่อผู้ใช้และรหัสผ่าน MySQL ของฉันได้รับการตรวจสอบสามครั้งและเหมือนกันกับที่ฉันใช้ ในเทอร์มินัล

ฉันพลาดอะไรไป


1
แทนที่ 'ชื่อผู้ใช้' และรหัสผ่านด้วยชื่อผู้ใช้ที่ถูกต้อง (อาจเป็นรูท) และรหัสผ่าน
Tachyons

2
ใช่ฉันทำอย่างนั้น ฉันไม่คิดว่ามันจะเป็นการดีถ้าจะทิ้งชื่อผู้ใช้และรหัสผ่านลงในฟอรัม อย่างที่ฉันพูดในตอนท้ายฉันได้ตรวจสอบชื่อผู้ใช้และรหัสผ่านหลายครั้งเพื่อให้แน่ใจว่าตรงกับสิ่งที่ฉันใช้เพื่อสร้างเข้าถึงและแก้ไขฐานข้อมูลผ่านเทอร์มินัลได้สำเร็จ
Casey Hungler

ฉันได้ลองแทนที่ localhost ด้วย 127.0.0.1 เช่นเดียวกับที่อยู่ IP ในพื้นที่และทั่วโลกของเซิร์ฟเวอร์ แต่ก็ไม่มีสิ่งใดสร้างความแตกต่างได้
Casey Hungler

1
คุณไม่ติดตั้งphp5-mysql?
เรน

ฉันค่อนข้างแน่ใจ แต่ฉันจะลองอีกครั้ง
Casey Hungler

คำตอบ:


9

ทุกอย่างดูโอเคดังนั้นฉันคิดว่าการติดตั้งของคุณไม่สมบูรณ์ เพื่อให้ mysql และ php สื่อสารกันคุณต้องติดตั้งphp5-mysql แพ็คเกจ:

sudo apt-get install php5-mysql

หมายเหตุ: ฉันต้องรีสตาร์ทคอมพิวเตอร์ก่อนที่จะทำงานได้
user124384

3

ติดตั้งphp5-mysqlแพ็คเกจและใช้mysqli_connectแทน mysql_connect


ขอบคุณมีคนอื่นแนะนำเช่นกันและมันก็ใช้ได้! ฉันสงสัยว่าในการค้นหาของฉันฉันได้พบกับสิ่งที่เกี่ยวกับ mysqli (และ PDO มักจะอยู่ที่นั่นด้วย) มันคืออะไร? อะไรทำให้ดีกว่าปกติ mysql
Casey Hungler

MySQLi เป็นรุ่นปรับปรุง
นกฮูก

จากสิ่งที่ฉันรู้คุณควรใช้ mysqli ตามที่แนะนำโดยทีมงาน php และ mysql_connect ไม่ได้อยู่ในการพัฒนาอีกต่อไปเพียงแค่บำรุงรักษาเท่านั้น ฉันคิดว่า mysql_connect ไม่ยอมรับคำสั่งที่เตรียมไว้เช่นและอื่น ๆ อีกมากมาย
เรน


1
sudo apt-get install php5-mysql

/etc/init.d/ค้นหาโพงรุ่นจาก ควรมีไฟล์ที่มีชื่อ tomcat7 ดังนั้น 7 จึงเป็นรุ่น

sudo service tomcat7 stop 
sudo service tomcat7 start

บางครั้งรีบูตเครื่องช่วยในการเรียงลำดับปัญหาอื่น ๆ หลังจากรีบู๊ตอย่าลืมรัน:

sudo service tomcat7 start 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.