Переход от mysql к ошибке mysqli

Я меняю много файлов с mysql на mysqli. Я использую это для этого: https://wikis.oracle.com/display/mysql/Converting+to+MySQLi

Мой файл подключений (я понял, что я считаю ненужным кодом, например, для обработки ошибок) просто создает ошибки, которые я не знаю, как их исправить. Ориентировочный код:

$conn=mysql_connect ("$localhost", "$dbusername", "$dbpass"); mysql_select_db("$db", $conn); 

Новый код:

 $conn=($GLOBALS["___mysqli_ston"] = mysqli_connect("$localhost", "$dbusername", "$dbpass")); ((bool)mysqli_query( $conn, "USE $db")); 

Вышеприведенный код – это просто мое подключение к файлу базы данных, которое используется в каждом файле через

 include_once("includes/connnect.php"); 

Предыдущий код, который подключается к базе данных и таблице, должен работать с приведенным ниже кодом, потому что у меня есть много запросов, как показано ниже, и легче изменить файл connect.php, чем много файлов:

 $con1 = mysqli_query($GLOBALS["___mysqli_ston"], "SELECT * FROM table1 WHERE id='$id'"); 

Изменить – обновить, чтобы включить полуплот, который я пропустил во время копирования и вставки.

Изменить 2 – Включить сообщения об ошибках / предупреждения из инструмента преобразования

 14 [Line 14] Please check your code for parse errors, we failed to parse " ". Conversion will be incomplete!". 14 [Line 14] Cannot analyze server parameter to extract host, socket and port! Conversion cannot be performed automatically. You must manually check the result of the conversion. 16 [Line 16] mysql_select_db(string database_name [...]) is emulated using mysqli_query() and USE database_name. This is a possible SQL injection security bug as no tests are performed what value database_name has. Check your script! 

Там, где строка 14

 $conn=mysql_connect ("$localhost", "$dbusername", "$dbpass"); 

и строка 16

 mysql_select_db("$db", $conn); 

EDIT – рабочий ответ ниже. Инструмент преобразования отлично работал для всех моих других файлов. Просто пришлось изменить способ подключения к базе данных в моем файле подключения

 $conn=($GLOBALS["___mysqli_ston"] = mysqli_connect("$localhost", "$dbusername", "$dbpass", "$db", "3306")) or die ('Cannot connect to the database because: ' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false))); 

3306 – это порт. Чтобы найти порт, используйте следующее:

 $port = ini_get("mysql.default_port"); echo "the port ". $port; 

Solutions Collecting From Web of "Переход от mysql к ошибке mysqli"

14 [Строка 14] Пожалуйста, проверьте свой код на наличие ошибок синтаксического анализа, нам не удалось проанализировать «». Конверсия будет неполной! ».

Эта ошибка вызвана пробелом перед вызовом mysql_connect() . Заменяя его на $conn=mysql_connect("$localhost", "$dbusername", "$dbpass"); удаляет этот вывод предупреждения MySQLConverterTool.

Остальные две ошибки – это то, с чем вам приходится иметь дело, фактически глядя на разницу между mysql_connect() и mysqli_connect() . Первый аргумент mysql_connect() , $server , может быть отформатирован как hostname:port тогда как с mysqli_connect() вы передадите только hostname в свой первый аргумент и передаете port в качестве необязательного пятого параметра. Кроме того, mysqli хотел бы указать базу данных в mysqli_connect() вместо отдельной функции, аналогичной mysql_select_db() .

Я полагаю, что если вам нужно, вы используете инструмент конвертера, чтобы преобразовать весь исходный код из mysql в mysqli, за исключением этих строк с предупреждениями в них. Только вы знаете, в какой формат "$localhost" входит: если он может содержать информацию о портах, вы должны отделить информацию о порте. Вероятно, вы должны установить базу данных для использования в mysqli_connect() вместо использования автоматической конвертации USE $db конвертера. Это именно то, что конвертер пытается вам сказать :-).

Просто отметить, я бы не сказал:

Мой файл подключений (я понял, что я считаю ненужным кодом, например, для обработки ошибок) просто создает ошибки, которые я не знаю, как их исправить.

Вышеизложенное указывает на то, что PHP-код, созданный конвертером, сам по себе бросает предупреждения и ошибки PHP во время выполнения (не то, что конвертер жалуется на ваш исходный код или информирует вас о том, что вам действительно нужно выполнить ручное преобразование, как я говорил выше) , Вот почему мы искали ошибки, такие как некорректная точка с запятой, которую вы исправили.

Вы забыли точку с запятой:

 $conn=($GLOBALS["___mysqli_ston"] = mysqli_connect("$localhost", "$dbusername", "$dbpass")); //<--- 

3306 – это порт. Чтобы найти порт, используйте следующее:

 $port = ini_get("mysql.default_port"); echo "the port ". $port; 

Я пробовал код, мой результат – это порт, но не номер?