2016-07-15 3 views
2

Я пытаюсь создать скрипт, который меняет мою кодировку с 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!"; 
    ?> 

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

<?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 errors

чем k вам за вашу помощь! :)

+0

mysqli_query() нужен как первый параметр для вашего подключения. Используйте его как '$ result = mysqli_query ($ mysqli, 'show tables'); 'Читайте http://php.net/manual/en/mysqli.query.php – Saty

+0

Я пробовал это, но теперь я получаю 50 раз ту же ошибку:' mysqli_query() ожидает как минимум 2 параметра, 1 задано ' – Relisora

+0

Имеете ли вы изменить внутри запроса петли foreach ?? – Saty

ответ

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"); 
    } 
} 
Смежные вопросы