我有一个数据库test
,其表名为table
,其中包含两列user
& email
。
我的下面的代码怎么了?无法将数组$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);
?>
答案 0 :(得分:3)
您有几个问题:
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);
?>
答案 1 :(得分:1)
请查看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注入以及其他东西更加安全。
答案 2 :(得分:0)
尝试回显您的查询。它看起来像是:
"INSERT INTO table VALUES (array)".
当然你不想要的东西。
您可以通过循环遍历数组或直接使用:
来构造插入查询INSERT INTO table VALUES ($user, $email)