Я меняю много файлов с mysql на mysqli. Я использую это, чтобы сделать это: https://wikis.oracle.com/display/mysql/Converting+to+MySQLiИзменение из mysql в mysqli ошибка кода
Мой файл подключений (для удобства я выбрал ненужный код, например, для обработки ошибок) создает ошибки, которые я не знаю, как исправить. Orignial код:
$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'");
Редактировать - обновлен, чтобы включить полуточку, которую я пропустил во время копирования и вставки.
Edit 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;
Просьба перечислить ошибки, которые вы получаете. Кроме того, у вас есть точка с запятой в конце строки 'mysqli_connect()' (можете ли вы ее вставить, если вы это сделаете)? – binki
Я не уверен, почему вы храните его в переменной globals, но я бы удалил эту часть $ conn = mysqli_connect («$ localhost», «$ dbusername», «$ dbpass»)). И я бы не хотел предлагать это, так как это было бы большим усилием, но подумайте о переходе на PDO вместо mysqli – Kris
Связанный: http://stackoverflow.com/questions/60174/how-to-prevent-sql-injection-in-php –