簡體   English   中英

使用PHP foreach循環創建MySQL表-語法錯誤

[英]Creating MySQL table with PHP foreach loop - error with syntax

建立我自己的電子商務網站並在后端ive中創建一個表單,管理員可以在其中創建某些產品過濾器組(例如顏色)。

當我嘗試使用foreach循環將新表插入數據庫時​​,im確保未插入任何空白條目(並防止這些空白條目引起問題)。

但是,我遇到了語法問題,對此進行了充分的研究,但未取得任何成功。

您的SQL語法有誤; 在第1行的“ entry_date DEFAULT CURRENT_TIMESTAMP)”附近檢查與MySQL服務器版本相對應的手冊以使用正確的語法

我的代碼:

// GROUP NAME PROVIDED

$group_name = $_POST['g_name'];

// FILTER OPTIONS PROVIDED

$filter_1 = $_POST['filter_1'];
$filter_2 = $_POST['filter_2'];
$filter_3 = $_POST['filter_3'];
$filter_4 = $_POST['filter_4'];
$filter_5 = $_POST['filter_5'];
$filter_6 = $_POST['filter_6'];
$filter_7 = $_POST['filter_7'];
$filter_8 = $_POST['filter_8'];
$filter_9 = $_POST['filter_9'];
$filter_10 = $_POST['filter_10'];
$filter_11 = $_POST['filter_11'];

include '../connection.php';

$query = "CREATE TABLE $group_name (
entry_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(255) NOT NULL,
product_id VARCHAR(255) NOT NULL,";

$newarray = array($filter_1,$filter_2,$filter_3,$filter_4,$filter_5,$filter_6,$filter_7,$filter_8,$filter_9,$filter_10,$filter_11);

    // For each value that is not NULL
    foreach ($newarray as $key => $value) {
        if (is_null($value) === false) {
            $new_array[$key] = $value;
            echo $value;

           $query = "$value VARCHAR(255) NOT NULL,";

        }

    }

$query= "entry_date DEFAULT CURRENT_TIMESTAMP)";

// Checking if query was successful or not

if (mysqli_query($connection, $query )) {
    echo "Table created successfully";
} else {
    echo "Error creating table: " . mysqli_error($connection);
}

mysqli_close($connection);

我嘗試過對時間戳插入進行不同的更改,但是沒有運氣。

值得注意的是,我還對查詢進行了拆分,以便可以包含foreach循環。

任何幫助,將不勝感激!

PS:我知道這段代碼可以進行SQL注入,因此我想在使其安全之前使其正常運行!

謝謝。 斯坦

工作代碼:

// GROUP NAME PROVIDED

$group_name = $_POST['g_name'];

// FILTER OPTIONS PROVIDED

$filter_1 = $_POST['filter_1'];
$filter_2 = $_POST['filter_2'];
$filter_3 = $_POST['filter_3'];
$filter_4 = $_POST['filter_4'];
$filter_5 = $_POST['filter_5'];
$filter_6 = $_POST['filter_6'];
$filter_7 = $_POST['filter_7'];
$filter_8 = $_POST['filter_8'];
$filter_9 = $_POST['filter_9'];
$filter_10 = $_POST['filter_10'];
$filter_11 = $_POST['filter_11'];

include '../connection.php';

$query = "CREATE TABLE $group_name (
entry_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(255) NOT NULL,
product_id VARCHAR(255) NOT NULL,";

$newarray = array($filter_1,$filter_2,$filter_3,$filter_4,$filter_5,$filter_6,$filter_7,$filter_8,$filter_9,$filter_10,$filter_11);

$filtered_array = array_filter($newarray);

    // For each value that is not NULL
    foreach ($filtered_array as $key => $value) {

            $filtered_array[$key] = $value;
            echo $value;

           $query .= "$value VARCHAR(255) NOT NULL,";       


    }

$query .= "entry_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP)";

echo "<br><br>".$query;

// Checking if query was successful or not

if (mysqli_query($connection, $query )) {
    echo "Table created successfully";
} else {
    echo "Error creating table: " . mysqli_error($connection);
}

mysqli_close($connection);

您缺少類型:

entry_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP

要么

entry_date DATETIME DEFAULT CURRENT_TIMESTAMP

您覆蓋變量$ query

使用=。 如果要累積字符串中的數據

$query =. "entry_date DEFAULT CURRENT_TIMESTAMP)";

購買這種方式並不是很好的存儲方式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM