【问题标题】:Running CREATE TABLE query throug PHP通过 PHP 运行 CREATE TABLE 查询
【发布时间】:2012-10-01 10:54:54
【问题描述】:

我正在通过 PHP 脚本运行以下查询

DROP TABLE IF EXISTS `address`;CREATE TABLE `address` (  `Id`
int(11) NOT NULL auto_increment,   `EntityId` int(11) NOT NULL,  
`sStreet1` varchar(50),   `sStreet2` varchar(50),   `sCity`
varchar(50),   `sLoc` varchar(50),   `sPv` char(2),   `sState`
varchar(50),   `sZip` varchar(10),   `sType` varchar(50),  
`FiscalAddress` tinyint(1) NOT NULL,   PRIMARY KEY  (`Id`) );

我可以通过不同的客户端(例如 Navicat)毫无问题地运行这个查询,但是通过 PHP 运行这个查询会输出以下内容

$result = mysql_query($query);
if (!$result) {
    $message  = 'Invalid import content: ' . mysql_error() . "\n\n";
    $message .= 'Whole query: ' . $query;
    die($message);
}

这将输出以下内容:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的“CREATE TABLE address (Id int(11) NOT NULL AUTO_INCREMENT, EntityId int(11)”附近使用正确的语法整个查询:DROP TABLE IF EXISTS address; CREATE表地址 ( Id int(11) NOT NULL AUTO_INCREMENT, EntityId int(11) NOT NULL, sStreet1 varchar(50), sStreet2 varchar(50), sCity varchar(50), sLoc varchar(50), sPv char(2), sState varchar(50), sZip varchar(10), sType varchar(50), FiscalAddress tinyint(1) NOT NULL, PRIMARY KEY (Id) );

我做错了什么???

【问题讨论】:

标签: php mysql


【解决方案1】:

问题不在于CREATE TABLE 语句,而在于mysql_query() 不支持在一次调用中执行多个语句。首先在单独的mysql_query() 调用中执行DROP TABLE 语句,然后执行CREATE TABLE

$dt = mysql_query("DROP TABLE IF EXISTS `address`");
if ($dt) {
  // Execute CREATE TABLE separately...
  $ct = mysql_query("CREATE TABLE...........");
  if (!$ct) {
     // Proceed with the rest of your code.
    $message  = 'Invalid import content: ' . mysql_error() . "\n\n";
    $message .= 'Whole query: ' . $query;
    die($message);
  }
}
else {} // DROP TABLE call failed. Handle appropriately.

【讨论】:

    【解决方案2】:

    感谢米海 你已经为我指明了正确的方向...... 在这种情况下,正确的方法是 msqli

    这是完整的工作代码:

    function runImportQuery($query = '') {
    
        $mysqli = new mysqli($this->DATABASE_HOST,$this->DATABASE_USER,$this->DATABASE_PASS,$this->DATABASE_DB );
    
        if ($mysqli->connect_errno) {
                $message = "Connect failed: ". $mysqli->connect_error;
        }else{
    
            $result = $mysqli->multi_query($query);
                // Check result
                // This shows the actual query sent to MySQL, and the error. Useful for debugging.
                if (!$result) {
                    $message  = "Failed to run query: (" . $mysqli->errno . ") " . $mysqli->error ."\n\n\r";
                    $message .= 'Whole query: ' . $query."\n\n\r";
                    return $message;
                }else{
                    $message  = "Import successfully completed!";
    
                }
    
        }
        mysqli_close($link);
        return $message;
    
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 2012-10-17
      • 1970-01-01
      • 2013-04-13
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      相关资源
      最近更新 更多