【问题标题】:How to create two query mysql insert and create table如何创建两个查询mysql插入和创建表
【发布时间】:2023-03-20 07:12:01
【问题描述】:

我想创建两个查询,一个用于将数据输入到一个表中,另一个用于创建一个新表。这是我创建新表但不插入数据的代码。我哪里错了?谢谢。

$sql = "INSERT INTO progetti(data, ora, nome_progetto)VALUES('".$_POST["data"]."','".$_POST["ora"]."','".$_POST["nome_progetto"]."')";

          "CREATE TABLE $_POST[nome_progetto] (
            id INT(11) AUTO_INCREMENT PRIMARY KEY,
            data date,
            intervento varchar(30),
            descrizione varchar(70),
            ore int(2)
          )";

【问题讨论】:

  • PHP 不支持多查询。顺便说一句,请了解 SQL 注入以及如何防止它们@bobby-tables.com ...您的代码根本不安全,您的数据库可能会在几秒钟内被黑客入侵。请在查询中为用户输入使用准备好的语句。
  • 你需要将两个SQL语句分开。
  • @Twinfriends 见mysqli::multi_query

标签: php mysql sql database mysqli


【解决方案1】:

这里你可以创建 if else 语句,如果插入完成则创建将运行

<?php

/*
* These are Database Credentials
*/
    $servername = "localhost";
    $username = "root";
    $password = " ";
    $dbname = "test_db";

    /*
    * Intiating the Database connection
    */
    $conn = new mysqli($servername, $username, $password, $dbname);

    /*
    * Checking the Databse connection
    */
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 

     $create = "CREATE TABLE ".$_POST[nome_progetto]." (
                    id INT(11) AUTO_INCREMENT PRIMARY KEY,
                    data date,
                    intervento varchar(30),
                    descrizione varchar(70),
                    ore int(2))";
            $result = $conn->query($create);     

    if ($result === TRUE) {
     $sql = "INSERT INTO progetti(data, ora, nome_progetto)VALUES('".$_POST["data"]."','".$_POST["ora"]."','".$_POST["nome_progetto"]."')";

      $insert = $conn->query($sql); 
      if ($insert === TRUE) {
        echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }

    }


    $conn->close();
    ?>

【讨论】:

  • 您好,谢谢您的回答,查询不起作用,您把完整的代码。该应用程序安装在本地 PC 上,未连接到 Internet。我是 php 新手,有些语法我不知道。
  • $sql = "INSERT INTO progetti (data, ora) VALUES ('".$_POST["data"]."', '".$_POST["ora"]."', )"; $query = $conn->query($sql); $result = $query->result(); if(isset($result)){ $sql = "CREATE TABLE $_POST[nome_progetto] (id INT(11) AUTO_INCREMENT PRIMARY KEY, data date, intervento varchar(30), )"; $query = $conn->query($sql); $查询->结果(); }
  • 嗨,Max,别担心,最初,您应该在本地系统中安装 wamp 服务器然后在 C:/ Wamp64/www 中有一个文件夹,使用一些 sample.php 创建文件并将其粘贴代码在代码中更新数据库的凭据然后你必须传递 Post 值检查它我已经修改了答案
  • 嗨,现在一切正常!谢谢你帮助我!
【解决方案2】:
  1. 使用不同的 SQL 语句(在您的情况 2 中,一个用于插入,另一个用于创建表)
  2. 在 PHP 中使用抽象层 (PDO) 提供的准备语句
  3. 阅读SQL Injection

【讨论】:

    猜你喜欢
    • 2017-04-17
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多