php sql查询不适用于php

Posted

技术标签:

【中文标题】php sql查询不适用于php【英文标题】:php sql query that does not work on php 【发布时间】:2015-05-27 05:18:09 【问题描述】:

大家好,我正在尝试通过 php 运行 sql 查询,但我遇到了无法修复的错误。

$sql = 'DROP TABLE IF EXISTS Stats;
     CREATE TABLE Stats (
     id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
     name varchar(255) ,
     Type int ,
      below int ,
     meeting int ,
     exceeding int 
     );   ';



if (mysqli_query($con, $sql)) 
    echo "New record created successfully";
 else 
    echo "Error: " . $sql . "<br>" . mysqli_error($con);

Ant 它给了我这个错误

您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 'CREATE TABLE Stats (id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,在第 2 行命名为 varc'

但是,如果我删除 DROP TABLE IF EXISTS Stats; 行它可以工作

$sql = 'CREATE TABLE Stats (
id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  name varchar(255) ,
  Type int ,
  below int ,
  meeting int ,
  exceeding int 
);   ';

我明白了

错误:CREATE TABLE Stats (id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,名称 varchar(255) ,类型 int ,低于 int ,会议 int , 超过 int );表“统计信息”已存在

因为我收到了Table 'stats' already exists的消息

任何有关如何解决此问题的理由或想法将不胜感激。

【问题讨论】:

【参考方案1】:

mysqli_query() 不支持多语句。所以你必须调用它2次。首先删除表,然后重新创建它。

 $sql = 'DROP TABLE IF EXISTS Stats;';

if (mysqli_query($con, $sql)) 
    echo "Table successfully";
 else 
    echo "Error: " . $sql . "<br>" . mysqli_error($con);



  $sql = '     CREATE TABLE Stats (
     id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
     name varchar(255) ,
     Type int ,
      below int ,
     meeting int ,
     exceeding int 
     );   ';
if (mysqli_query($con, $sql)) 
    echo "New record created successfully";
 else 
    echo "Error: " . $sql . "<br>" . mysqli_error($con);

【讨论】:

如果mysqli_query不支持multiple statement,那么他可以用mysqli_multi_query代替mysqli_query。【参考方案2】:

你可以试试这个: 来自

 $sql = 'DROP TABLE IF EXISTS Stats;
     CREATE TABLE Stats (
     id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
     name varchar(255) ,
     Type int ,
      below int ,
     meeting int ,
     exceeding int 
     );   ';

$sql = 'CREATE TABLE IF NOT EXISTS Stats (
         id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
         name varchar(255) ,
         Type int ,
          below int ,
         meeting int ,
         exceeding int 
         );   ';

【讨论】:

【参考方案3】:

您可以使用mysqli_multi_query() 执行一个或多个查询。

另请阅读mysqli_multi_query以执行多个语句

喜欢:-

$query  = "DROP TABLE IF EXISTS Stats;";
$query .= "CREATE TABLE Stats (
     id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
     name varchar(255) ,
     Type int ,
      below int ,
     meeting int ,
     exceeding int 
     );";

/* execute multi query */
if ($mysqli->multi_query($con,$query)) 
       //your code here
 

对于这个错误:-

表“统计”已经存在

你使用

CREATE TABLE IF NOT EXISTS `Stats`

在您的创建语句中

【讨论】:

以上是关于php sql查询不适用于php的主要内容,如果未能解决你的问题,请参考以下文章

PHP SQL 查询列表 WHERE=?

document.getElementById() 作为 PHP SQL 查询参数

PHP sql查询没有返回任何内容

PHP SQL 查询不起作用

PHP sql查询不返回表格内容

将 PHP SQL 转换为 Laravel 查询构建器 [重复]