【问题标题】:Creating a table in PHP for MySQL server (MySQLi)在 PHP 中为 MySQL 服务器 (MySQLi) 创建一个表
【发布时间】:2017-08-05 07:35:51
【问题描述】:

连接:

<?php 
$db_name = "xxx";
$mysql_username = "xxx";
$mysql_password = "xxx";
$server_name = "xxx";
// Create connection
$conn = new mysqli("xxx","xxx","xxx","xxx");
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
echo "Connected successfully";
?>

完整代码(这是注册代码)[编辑](我越来越近了吗?):

    <?php 
    require "conn.php";
    echo "debug 1";
    $stmt = $conn->prepare("SELECT * FROM UserData WHERE username = ?");
    $stmt->bind_param('s',$username);
    $username = $_POST["username"]; 
    $stmt->execute();
    $stmt->store_result();

    echo "debug 2";
    if ($stmt->num_rows == 0){ // username not taken
      echo "debug 3";
      $stmt2 = $conn->prepare("INSERT INTO UserData (username, password) VALUES (?, ?)");
      $password =($_POST["password"]);
      $username =($_POST["username"]);  
      $stmt2->bind_param('ss', $username, $password);
      $stmt2->execute();
       $MyServer = ($_POST["username"]);
  $stmt3 = $conn->prepare('CREATE TABLE ? (
        id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
        username VARCHAR(30) NOT NULL
        )');
  $stmt3->bind_param('s',$username);
  $username = $_POST["username"];
  $stmt->execute();  
    ///mysqli_query(connection object,query)
      if ($stmt2->affected_rows == 1){
        echo 'Insert was successful.';

      }else{ echo 'Insert failed.';
       var_dump($stmt2);
      }
    }else{ echo 'That username exists already.';}
    ?>

我使用此代码创建了一个包含已发布用户名名称的表。这有什么问题,因为它不起作用。

【问题讨论】:

  • 到目前为止,您已经获得了一个包含 SQL 语句的字符串。你在用它做什么?我们需要您用于运行查询的代码和您得到的错误。
  • 输入您用于执行您提到的查询的代码
  • 如何在 MySQLi 中执行查询? (我是初学者,所以请具体)

标签: php mysql mysqli


【解决方案1】:
$MyServer = ($_POST["username"]);
$sql = "CREATE TABLE '$MyServer' (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    username VARCHAR(30) NOT NULL
    )";
$result = mysqli_query($con,$sql);

mysqli_query(连接对象,查询)

你可以像上面那样执行你的查询。

【讨论】:

    【解决方案2】:

    只是我个人的喜好。

    $myServer = mysqli_real_escape_string($con, $_POST["username"]);
    $sql = "CREATE TABLE '$MyServer' (
        id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
        username VARCHAR(30) NOT NULL
        )";
    $result = mysqli_query($conn, $sql);
    

    PDO 也是一种选择。

    $host = 'localhost';
    $db   = '<INSERT DATABASE NAME HERE>';
    $user = '<INSERT USERNAME HERE>';
    $pass = '<INSERT PASSWORD HERE>';
    $charset = 'utf8';
    
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    
    $pdo = new PDO($dsn, $user, $pass, $opt);
    
    $stmt = $pdo->prepare('CREATE TABLE ? (
            id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
            username VARCHAR(30) NOT NULL
            )');
    $stmt->execute([$myServer]);
    $success = $stmt->fetch();
    

    【讨论】:

      【解决方案3】:

      使用下面的行作为你的 sql 变量

      $sql = " create table if not exists  {$MyServer} (
          id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
          username VARCHAR(30) NOT NULL
          )";
      

      并且在mysql中的表名单引号(')中不存在`;

      【讨论】:

        猜你喜欢
        • 2014-10-09
        • 1970-01-01
        • 1970-01-01
        • 2014-03-24
        • 2019-09-10
        • 2012-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多