programing

SQL 구문에 오류가 있습니다(MySQLi SQL 예외가 발견되지 않음).다른 답변을 시도했지만 실패했습니다.

skycolor 2023. 6. 21. 22:28
반응형

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

반응형