Ну, плохо попробуйте объяснить это, пожалуйста, извините мой английский.Проблемы с вставкой строк в MySQL
У меня есть сценарий, который сбрасывает всю базу данных в файл SQL, а затем другой скрипт разбивает строки и выполняет их для удаления, создания и вставки данных. Проблема в том, что некоторые строки «обрезаны». Он просто вставить строку, пока она не достигнет первого специального символа, например:
Для строки:
"Pantalon azul marino de Poliéster con cinta blanca bordada con el nombre de la institución en uno de sus costados."
это просто вставить: не отбрасывается
"Pantalon azul marino de Poli"
Нет ошибок. Но это происходит только с использованием сценария, но когда я запускаю запросы вручную и импортирую файл SQL в phpMyAdmin, все работает. Все установлено на utf8.
У меня нет идей, любая помощь будет очень оценена.
include ('../core/connection.inc.php');
$conn = dbConnect('admin');
$conn->query("SET NAMES 'utf8'");
$conn->set_charset("utf8");
$type = 0;
// Temporary variable, used to store current query
$templine = '';
// Read in entire file
$lines = file('db-backup.sql');
// Loop through each line
$correct = 0;
$failed = 0;
foreach ($lines as $line){
// Skip it if it's a comment
if (substr($line, 0, 2) == '--' || $line == '')
continue;
// Add this line to the current segment
$templine .= $line;
// If it has a semicolon at the end, it's the end of the query
if (substr(trim($line), -1, 1) == ';'){
$templine = str_replace("latin1","utf8",$templine);
$templine = trim($templine);
// Perform the query
$conn->query($templine);
$errno = $conn->errno;
$error = $conn->error;
if($conn->affected_rows > 0){
echo "OK: (".$templine.")<br/>";
$correct++;
} else {
echo "Failed: (".$templine.")<br/>";
echo " Errno: ".$errno." <br/>";
echo " Error: ".$error." <br/>";
$failed++;
}
$templine = '';
}
}
проверить поле размера вашего стола. i, вы должны увеличить размер поля до 'varchar (256)' или более –
@SatishSharma это поле типа текста:/ –
Очевидно, что это связано с транслитерацией, содержащейся в усеченной строке. Можете ли вы вставить строку вручную из командной строки mysql без ее усечения? –