Для начала я новичок в PHP, и это мой первый пост в stackoverflow. Я пытаюсь использовать mysqli_connect () для записи записи в таблицу пользователей в тестовой базе данных. В mysql-клиенте я могу добавить запись с помощью команды:
INSERT INTO users VALUES ( 'id' , 'smith' , 'joe' , 'joepass' );
Насколько я понимаю, следующая страница .php должна добавить joe smith в таблицу users, когда она попадает в браузер:
<?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 start», который является первым выражением эха. Я ожидал бы увидеть слова «php end». Когда я проверяю таблицу users в mysql-клиенте, я не вижу новой записи. Также, когда я открываю php-интерактивную оболочку с php -a
и запускаю команду 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. В таблице «Credits» 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
Для установки php, apache и mysql на этом сервере Ubuntu, я выполнил следующие команды:
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
Я также grep -r 'mysqli'
вывод grep -r 'mysqli'
в каталог /etc/php5
:
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