繁体   English   中英

将数据从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关键字,如果实际上是表名,则需要反引号

     mysql_select_db("test", $con); $user = "safwan"; $email = "esafw@jdjd.com"; $u = array ( 'user' => $user, 'email' => $email ); $q = "INSERT INTO table (user, email) VALUES ('".mysql_real_escape_string($u['user'])."', '".mysql_real_escape_string($u['email'])."')"; mysql_query($q) OR die(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/zh/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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM