Измените utf8mb4 на utf8

Я пытаюсь создать скрипт, который меняет мою кодировку с utf8mb4 на utf8.

Мои знания PHP немного устарели, и я не могу заставить скрипт работать с mysqli.

это базовый скрипт, который у меня был:

<?php
$con = mysql_connect('localhost','user','password');
if(!$con) { echo "Cannot connect to the database ";die();}
  mysql_select_db('dbname');
  $result=mysql_query('show tables');
  while($tables = mysql_fetch_array($result)) {
    foreach ($tables as $key => $value) {
      mysql_query("ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
    }}
  echo "The collation of your database has been successfully changed!";
  ?>

это не работает, поэтому я попытался обновить его до MySQL, и теперь у меня есть это:

<?php
$mysqli = new mysqli("localhost", "root", "", "test");

if (mysqli_connect_errno()) {
    printf("connexion error : %s\n", mysqli_connect_error());
    exit();
}

if ($result = $mysqli->query("SELECT DATABASE()")) {
    $row = $result->fetch_row();
    printf("The database is : %s.\n", $row[0]);
    $result->close();
}

  $result=mysqli_query('show tables');
  while($tables = mysqli_fetch_array($result)) {
    foreach ($tables as $key => $value) {
      mysqli_query("ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
    }}
  echo "The collation of your database has been successfully changed!";
  ?>

Я думаю, что проблема в последней части, ошибки, которые я получаю:

ошибки php

Спасибо за помощь!:)

1 ответ

Решение

mysqli_query() нужен первый параметр как ваше соединение. Используйте это как

$result = mysqli_query($mysqli, 'show tables');
while ($tables = mysqli_fetch_array($result)) {
    foreach ($tables as $key => $value) {
        mysqli_query($mysqli, "ALTER TABLE $value CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci");
    }
}
Другие вопросы по тегам