首先,我是PHP新手,這是我在stackoverflow上的第一篇文章。 我正在嘗試使用mysqli_connect()將記錄寫入測試數據庫中的用戶表。 在MySQL客戶端,我可以用命令添加一條記錄:PHP mysqli()不工作
INSERT INTO users VALUES ('id' , 'smith' , 'joe' , 'joepass');
至於我能理解,下面的PHP頁面應該增加張三的用戶表,當它在瀏覽器中被擊中:
<?php
echo "php start";
$con = mysqli_connect("localhost" , "root" , "rootpass" , "db_name");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($con , "INSERT INTO users values ('id' , 'smith' , 'joe' , 'joepass')");
mysqli_close($con);
echo "php end";
?>
但是,當我去這個頁面在瀏覽器中,我看到的是文本「PHP開始」,這是第一個echo語句。我希望看到「php結束」這個詞。當我在mysql客戶端中檢查用戶表時,我看不到任何新記錄。當我用php -a
打開php交互式shell並運行命令mysqli_connect();
時,響應是PHP Fatal error: Call to undefined function mysql_connect() in php shell code on line 1
。
這使我相信mysqli_connect沒有在php.ini中正確安裝或配置,但我沒有足夠的理解php.ini來排除故障。另外,我有一個phpinfo()test.php頁面。在 「信用」 的phpinfo表(),我看到了下面幾行:
MySQL driver for PDO George Schlossnagle, Wez Furlong, Ilia Alshanetsky, Johannes Schlueter
MySQLi Zak Greant, Georg Richter, Andrey Hristov, Ulf Wendel
MySQLnd Andrey Hristov, Ulf Wendel, Georg Richter, Johannes Schlueter
MySQL Zeev Suraski, Zak Greant, Georg Richter, Andrey Hristov
對此Ubuntu的服務器上安裝了PHP,Apache和MySQL,我已經運行的命令是:
sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install php5-cli
我唯一能記得的額外配置是在apache2/mods-available/dir.conf
行DirectoryIndex
中添加幾個文件名以自動打開某些文件名。
是否有任何mysqli
配置需要在功能使用之前完成?
此外,這是一個AWS服務器,但我不明白怎麼可能有任何網絡問題的「localhost」 ...:P
我也將包括在/etc/php5
目錄grep -r 'mysqli'
輸出:
php5 grep -r 'mysqli'
apache2/php.ini:; http://php.net/mysqli.max-persistent
apache2/php.ini:mysqli.max_persistent = -1
apache2/php.ini:; http://php.net/mysqli.allow_local_infile
apache2/php.ini:;mysqli.allow_local_infile = On
apache2/php.ini:; http://php.net/mysqli.allow-persistent
apache2/php.ini:mysqli.allow_persistent = On
apache2/php.ini:; http://php.net/mysqli.max-links
apache2/php.ini:mysqli.max_links = -1
apache2/php.ini:; http://php.net/mysqli.cache_size
apache2/php.ini:mysqli.cache_size = 2000
apache2/php.ini:; Default port number for mysqli_connect(). If unset, mysqli_connect() will use
apache2/php.ini:; http://php.net/mysqli.default-port
apache2/php.ini:mysqli.default_port = 3306
apache2/php.ini:; http://php.net/mysqli.default-socket
apache2/php.ini:mysqli.default_socket =
apache2/php.ini:; http://php.net/mysqli.default-host
apache2/php.ini:mysqli.default_host =
apache2/php.ini:; http://php.net/mysqli.default-user
apache2/php.ini:mysqli.default_user =
apache2/php.ini:; Default password for mysqli_connect() (doesn't apply in safe mode).
apache2/php.ini:; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw")
apache2/php.ini:; http://php.net/mysqli.default-pw
apache2/php.ini:mysqli.default_pw =
apache2/php.ini:mysqli.reconnect = Off
cli/php.ini:; http://php.net/mysqli.max-persistent
cli/php.ini:mysqli.max_persistent = -1
cli/php.ini:; http://php.net/mysqli.allow_local_infile
cli/php.ini:;mysqli.allow_local_infile = On
cli/php.ini:; http://php.net/mysqli.allow-persistent
cli/php.ini:mysqli.allow_persistent = On
cli/php.ini:; http://php.net/mysqli.max-links
cli/php.ini:mysqli.max_links = -1
cli/php.ini:; http://php.net/mysqli.cache_size
cli/php.ini:mysqli.cache_size = 2000
cli/php.ini:; Default port number for mysqli_connect(). If unset, mysqli_connect() will use
cli/php.ini:; http://php.net/mysqli.default-port
cli/php.ini:mysqli.default_port = 3306
cli/php.ini:; http://php.net/mysqli.default-socket
cli/php.ini:mysqli.default_socket =
cli/php.ini:; http://php.net/mysqli.default-host
cli/php.ini:mysqli.default_host =
cli/php.ini:; http://php.net/mysqli.default-user
cli/php.ini:mysqli.default_user =
cli/php.ini:; Default password for mysqli_connect() (doesn't apply in safe mode).
cli/php.ini:; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw")
cli/php.ini:; http://php.net/mysqli.default-pw
cli/php.ini:mysqli.default_pw =
cli/php.ini:mysqli.reconnect = Off
第一步:[啓用錯誤報告](http://stackoverflow.com/a/6575502/1438393)。 –
現在我打的php頁面是: '致命錯誤:調用未定義的函數mysqli_connect()在/var/www/php-mysql/insert_user.php第5行' – austinheiman