检查与MariaDB服务器版本对应的手册,以便在“数组”SQL附近使用正确的语法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查与MariaDB服务器版本对应的手册,以便在“数组”SQL附近使用正确的语法相关的知识,希望对你有一定的参考价值。

注意:这个问题是根据我的上一个问题here

以下SQL语法有什么问题?

$sql = "ALTER TABLE products ADD ".$supplier_name_ . $p." varchar(500) AFTER supplier_info_1";

它产生以下错误:

您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以便在第1行的'“Array”varchar(500)AFTER supplier_info_1'附近使用正确的语法

更新:

supplier_name_ . $p来自这个for循环:

// supplier info
    $supplier_name_1 = $_POST['supplier_name_1'];
    $supplier_sending_1 = $_POST['supplier_sending_1'];
    $supplier_guarantee_1 = $_POST['supplier_guarantee_1'];
    $supplier_price_1 = $_POST['supplier_price_1'];
    $supplier_colors_1 = $_POST['supplier_colors_1'];
    $supplier_info_1 = array($supplier_name_1, $supplier_sending_1, $supplier_guarantee_1, $supplier_price_1, $supplier_colors_1);
    $proSupply_1 = json_encode($supplier_info_1);

    for($p=2;$p<=5;$p++){
        $supplier_name_ . $p = $_POST['supplier_name_'.$p.''];
        $supplier_sending_ . $p = $_POST['supplier_sending_'.$p.''];
        $supplier_guarantee_ . $p = $_POST['supplier_guarantee_'.$p.''];
        $supplier_price_ . $p = $_POST['supplier_price_'.$p.''];
        $supplier_colors_ . $p = $_POST['supplier_colors_'.$p.''];
        $supplier_info_ . $p = array($supplier_name_ . $p, $supplier_sending_ . $p, $supplier_guarantee_ . $p, $supplier_price_ . $p, $supplier_colors_ . $p);
        $proSupply_ . $p = json_encode($supplier_info_ . $p);

        if(!empty($supplier_name_ . $p)&&(!empty($supplier_sending_ . $p))&&(!empty($supplier_guarantee_ . $p))&&(!empty($supplier_price_ . $p))&&(!empty($supplier_colors_ . $p))){
            $sql = "ALTER TABLE products ADD '.$supplier_name_ . $p.' varchar(500) AFTER supplier_info_1";
            if ($con->query($sql) === TRUE){
                $insert_suppliers = "
                INSERT INTO `products` (`supplier_info_" . $p . "`) 
                VALUES ('$proSupply_" . $p . "')
                ";
                $run_suppliers = mysqli_query($con,$insert_suppliers);
                if(!$run_product){
                    error_reporting(E_ALL);
                    die(mysqli_error($con));
                }
            }else{
                error_reporting(E_ALL);
                die(mysqli_error($con));
            }
        }
    }
答案

MariaDB中,ADD COLUMN仅在添加的列出现在表格的最后时才适用。有关详细信息,请查看手册link

因为在您的代码中,您每次都在“supplier_info_1”之后插入/创建新列。这是错误的原因。

您应该使该列动态化。

if($p == 2){
  $sql = "ALTER TABLE products ADD '.$supplier_name_ . $p.' varchar(500) AFTER supplier_info_1";
} else if($p > 2) {
  $i = $p-1;
  $sql = "ALTER TABLE products ADD '.$supplier_name_ . $p.' varchar(500) AFTER supplier_info_".$i;
 }
另一答案

问题在于你的语法

$sql = "ALTER TABLE products ADD '.$supplier_name_ . $p.' varchar(500) AFTER supplier_info_1";

我看到你在表中使用for循环添加表字段,并在SQL查询中使用AFTER supplier_info_1"

一旦插入字段,supplier_info_1"将更改为更新字段。

因此解决方案是获取最后输入字段并在此处打印。

我希望它有所帮助!

以上是关于检查与MariaDB服务器版本对应的手册,以便在“数组”SQL附近使用正确的语法的主要内容,如果未能解决你的问题,请参考以下文章

SQL 语法错误; “检查与您的 MariaDB 服务器版本相对应的手册,以了解在 'Order INT NOT NULL' 附近使用的正确语法 [重复]

SQL语法错误。请我检查MariaDB服务器的手册

#1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法

SQL 语法错误:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册

MySQL - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法 - phpMyAdmin

检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 1 行的 '' 附近使用如何修复 [关闭]