在 php 中将数据从数组插入 mysql


Inserting data into mysql from array in php

我有一个数据库test,表名table有两列useremail。我的以下代码有什么问题?无法将数组$u添加到我的数据库

<?php
    $con = mysql_connect("localhost","root","");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
    mysql_select_db("test", $con);
    $user = "safwan";
    $email = "esafw@jdjd.com";
    $u = array ( user => $user,
                    email => $email
                   );
    $q =   "INSERT INTO table  VALUES ($u)";
    mysql_query($q) OR die(mysql_error());
    mysql_close($con);
    ?> 

您有几个问题:

  1. 您正在尝试将数组直接插入到数据库中。您需要单独访问这些值。

  2. 您应该在字符串周围使用引号,包括当它们是数组中的键时

  3. 您需要了解 SQL 注入

  4. 您应该考虑从 mysql_* 函数迁移,因为它们很快就会消失。

  5. table 是一个 MySQL 关键字,如果它实际上是表名,则需要反引号

    $user, "电子邮件" => $email ); $q = "插入到表中(用户、电子邮件)值(".mysql_real_escape_string($u['用户'])."'', '".mysql_real_escape_string($u['电子邮件'])."')"; mysql_query($q)或死亡(mysql_error()); mysql_close($con); ?>

或:

<?php
    $con = mysql_connect("localhost","root","");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
    mysql_select_db("test", $con);
    $user = "safwan";
    $email = "esafw@jdjd.com";
    $q =   "INSERT INTO table (user, email) VALUES ('".mysql_real_escape_string($user)."', '".mysql_real_escape_string($email)."')";
    mysql_query($q) OR die(mysql_error());
    mysql_close($con);
    ?>         

请查看MySQL数据类型。 http://dev.mysql.com/doc/refman/5.5/en/data-types.html

您必须遍历数组并单独添加元素。我还建议使用其他东西,如MySQLi或PDO进行安全 http://php.net/manual/en/book.pdo.php

事实上,使用 PDO,您可以"添加阵列"(因为它的设计方式)。

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name=? AND password=?);
$stmt->execute(array($_GET['username'], $_GET['password']));

我不会详细介绍太多细节,因为您应该真正学习一种较新的技术。使用预准备语句和SQL注入之类的东西更安全。

尝试回显查询。它将如下所示:

"INSERT INTO table  VALUES (array)".

肯定是你不想要的。

您可以通过循环遍历数组或直接使用 :

INSERT INTO table  VALUES ($user, $email)