【问题标题】:How to insert data to columns from PHP into MariaDB?如何将数据从 PHP 插入 MariaDB 中的列?
【发布时间】:2016-01-20 20:31:20
【问题描述】:

我熟悉 MySql 数据库,但有一个名为 MariaDB 的新数据库。我尝试从 PHP 代码中插入数据,但我不能,你能帮我插入数据吗?我服务器上的 PHP 是 5.4.32,我的 MySQL 版本是 10.0.20-MariaDB-cll-live。

这是我用来尝试将数据插入 MariaDB 的代码。

$connection = mysql_connect("localhost", "root", ""); // Establishing Connection with Server
$db = mysql_select_db("database", $connection); // Selecting Database from Server

if(isset($_POST['submit'])){ // Fetching variables of the form which travels in URL
    $name = $_POST['name'];
    $email = $_POST['email'];
    if($name !=''||$email !=''){
       //Insert Query of SQL
       $query = mysql_query("insert into VIP Membership(Name, Email) values ('$name', '$email')");
       echo "<br/><br/><span>Data Inserted successfully...!!</span>";
    }
    else{
       echo "<p>Insertion Failed <br/> Some Fields are Blank....!!</p>";
    }
}

mysql_close($connection); // Closing Connection with Server

编辑:我现在使用了 mysqli 代码,但它抛出了一个错误 500。

<?php
$servername = "localhost";
$username = "username";
$password = "";
$dbname = "db_table";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
if(isset($_POST['submit'])){ // Fetching variables of the form which travels in URL
$name = $_POST['name'];
$email = $_POST['email'];
if($name !=''||$email !=''){

$sql = "INSERT INTO 'VIP Membership' (Name, Email)
VALUES ('$name', '$email')";

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

mysqli_close($conn);

【问题讨论】:

  • 你需要用反引号括住你的表名,因为它里面有一个空格。 INSERT INTO `VIP Membership`(`Name`, `Email`) VALUES (?, ?);
  • P.S.此代码不安全。你应该使用mysql_query和朋友了。您应该考虑升级到 MySQLi 或 PDO 并切换到准备好的语句。
  • 谢谢你,顺便说一句,如果服务器的用户名最后有@localhost,我需要将其添加到代码中的用户名或@左侧的用户名
  • 嗯,你是对的,我检查了 phpmyadmin 的右侧并说扩展名:mysqli @RocketHazmat
  • 在 PHP 代码中,你不应该需要 @localhost,只需要 @ 左侧的内容。

标签: php mysql mariadb


【解决方案1】:

检查你的括号{在这里插入代码}如果这个东西没有正确安排它会带来一个错误

【讨论】:

    【解决方案2】:

    您需要使用反引号(不是单引号)来包围您的表名,因为它有一个空格。

    $sql = "INSERT INTO `VIP Membership` (Name, Email) VALUES ('$name', '$email')";
    

    更新:您应该真的使用准备好的语句。就目前而言,这段代码非常不安全。

    $sql = mysqli_prepare($conn, "INSERT INTO `VIP Membership` (Name, Email) VALUES (?, ?)");
    if($sql !== FALSE){
        mysqli_stmt_bind_param($sql, "ss", $name, $email);
        if(mysqli_stmt_execute($sql)){
            echo "New record created successfully";
        } else {
            echo mysqli_stmt_error($sql);
        }
    } else{
        echo mysqli_error($conn);
    }
    

    【讨论】:

    • 男人仍然给我同样的错误:(我们可以聊聊吗?@RocketHazmat
    • 它给你什么错误?你看到任何 MySQL 错误吗?您确定这不是 PHP 中的语法错误吗?尝试添加ini_set('display_errors', 1); error_reporting(-1); 看看是否收到错误消息?
    • 还要确保您没有遗漏任何;})
    • 嗯,别担心,伙计,我想我修好了我犯了一个错误@RocketHazmat
    • @RocketHazmat 啊,是的,你是对的。我检查了问题的修订。无论哪种方式,你都 ;-)
    【解决方案3】:

    MariaDB 是 MySQL 的向后兼容的二进制插件替代品。这意味着 MariaDB 版本的工作方式与 MySQL 完全相同。您无需执行任何特定操作即可使您的 MySQL 代码在 MariaDB 上运行。但在您的代码中,我会使用 mysqli 函数(或 PDO)而不是旧的已弃用的 mysql 函数。

    由于您可能会遇到一些不兼容的问题,您可以查看此官方文档以了解两者之间的差异。 MariaDB vs MySQL

    【讨论】:

      猜你喜欢
      • 2019-01-26
      • 2017-04-17
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多