반응형
SQL 구문에 오류가 있습니다(MySQLi SQL 예외가 발견되지 않음).다른 답변을 시도했지만 실패했습니다.
저는 기본적으로 SQL 파일을 배열로 읽고 변수를 동일하게 설정한 다음 단어를 대체하는 PHP 파일을 가지고 있습니다.<DB_PREFIX>
나와 함께$db_prefix
변수 및 SQL을 실행하는 중입니다.그런데 아주 모호한 오류가 발생하고 있습니다.
오류 메시지는 다음과 같습니다.
치명적 오류:mysqli_sql_exception이(가) 발견되지 않았습니다.SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 C:\xampp\htdocs\Project\install\file.php:74의 74행에 있는 'DROP TABLE IF EXESS chbep_accounts' 근처에서 사용할 올바른 구문을 확인하십시오.
다음은 제 파일입니다.inc.php line 74:
$sql_dump = file($sql_dump_file, FILE_IGNORE_NEW_LINES);
$database_prefix = "chbep_";
$sql_dump = str_ireplace('<DB_PREFIX>', $database_prefix, $sql_dump);
foreach($sql_dump as $sql_line){
$tsl = trim($sql_line);
if(($sql_line != '') && (substr($tsl, 0, 2) != '--') && (substr($tsl, 0, 1) != '?') && (substr($tsl, 0, 1) != '#')) {
$query .= $sql_line;
if(preg_match('/;\s*$/', $sql_line)){
if((strlen(trim($query)) > 5) && !@mysqli_query($link, $query)){
$error_mg[] = mysqli_error($link);
return false;
}
$query = '';
}
}
}
그$sql_dump
변수는 사용자 정의 SQL 파일로, 다음을 사용하여 배열로 읽힙니다.file()
함수와 변수가 동일하게 설정되면 <DB_PREFIX>를 내 것으로 교체합니다.$db_prefix
이 경우 'chbep_'인 변수입니다.다음은 사용자 지정 SQL 파일과 위의 오류에 표시된 행입니다.
DROP TABLE IF EXISTS `<DB_PREFIX>accounts`;
추가 SQL 행:
CREATE TABLE IF NOT EXISTS `<DB_PREFIX>accounts` (
`id` smallint(6) NOT NULL AUTO_INCREMENT,
`first_name` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`last_name` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`user_name` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`password` varchar(50) CHARACTER SET latin1 NOT NULL DEFAULT '',
`email` varchar(100) CHARACTER SET latin1 NOT NULL,
`profile_photo` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`profile_photo_thumb` varchar(60) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`account_type` enum('owner','mainadmin','admin','hotelowner','agencyowner','regionalmanager','hotelmanager') CHARACTER SET latin1 NOT NULL DEFAULT 'mainadmin',
`companies` varchar(1024) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`preferred_language` varchar(2) CHARACTER SET latin1 NOT NULL,
`oa_consumer_domain` varchar(150) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`oa_consumer_key` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`oa_consumer_secret` varchar(70) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
`oa_date_created` datetime NULL DEFAULT NULL,
`date_created` datetime NULL DEFAULT NULL,
`date_lastlogin` datetime NULL DEFAULT NULL,
`registration_code` varchar(20) CHARACTER SET latin1 NULL DEFAULT '',
`registration_type` varchar(20) CHARACTER SET latin1 NULL DEFAULT '',
`is_active` tinyint(1) NOT NULL DEFAULT '1',
`room_relocation` tinyint(1) NOT NULL DEFAULT '1',
`hotel_relocation` tinyint(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
언급URL : https://stackoverflow.com/questions/75889915/error-in-sql-syntax-uncaught-mysqli-sql-exception-tried-other-answers-to-no-a
반응형
'programing' 카테고리의 다른 글
오라클의 rownum처럼 mysql에서 행 번호를 가져올 수 있는 방법이 있습니까? (0) | 2023.06.21 |
---|---|
Git 병합 충돌 시 생성되는 BACKUP, BASE, LOCAL 및 REMOTE 파일은 무엇입니까? (0) | 2023.06.21 |
기존 프로젝트에 ASP.NET MVC5 ID 인증 추가 (0) | 2023.06.21 |
요구 사항을 사용자 지정하는 방법.여러 환경을 위한 txt? (0) | 2023.06.21 |
컴파일러에서 함수 이름 앞에 밑줄이 붙는 이유는 무엇입니까? (0) | 2023.06.21 |