Closed. This question is
off-topic。它当前不接受答案。
想改善这个问题吗?
Update the question,所以它是
on-topic,用于堆栈溢出。
4年前关闭。
我是PHP MySQL的新手。我正在从事基于大型数据的项目。我为PHP中的每个数据创建了数组。现在,我想将其插入MySQL数据库。
$data = array (
[1] => array(
'title' => "xxxxx",
'content' => "xxxxx",
'category' => "xxxxx",
),
[2] => array(
'title' => "xxxxx",
'content' => "xxxxx",
'category' => "xxxxx",
),
[3] => array(
'title' => "xxxxx",
'content' => "xxxxx",
'category' => "xxxxx",
),
);
我尝试了以下代码,但不起作用。
if(is_array($data)){
$sql = "INSERT INTO `table`( `title`, `content`, `category`) values";
$valuesArr = array();
foreach($data as $row){
$title = mysql_real_escape_string( $row['title'] );
$content = mysql_real_escape_string( $row['content'] );
$category = mysql_real_escape_string( $row['category'] );
$valuesArr[] = "('title', 'content', 'category')";
}
$sql .= implode(',', $valuesArr);
mysql_query($sql) or exit(mysql_error());
}
下面的代码工作正常,但是它按给定值插入数据。我想插入数组。
<?php
$servername = "localhost";
$username = "xxxxx";
$password = "xxxxxxx";
$db_name = "xxxxxxxxx";
// Create connection
$link = new mysqli($servername, $username, $password, $db_name);
if(!$link){
echo "Failed" .mysqli_connect_error();
}
$title="John";
$content="John";
$cateogry="John";
$query = "INSERT INTO table (title, content,category) VALUES ('$title', '$content','$category')";
if(mysqli_query($link,$query)) {
echo "Insertion successful";
} else {
echo "Error: " .$query . "<br>" . mysqli_error($link);
}
mysqli_close($link);
?>
更新
<?php
$servername = "localhost";
$username = "xxxx";
$password = "xxxxx";
$db_name = "xxxxxxx";
// Create connection
$link = mysql_connect($servername, $username, $password, $db_name);
if(!$link){
echo "Failed" .mysql_connect_error();
}
if(is_array($data)){
$sql = "INSERT INTO `table`( `title`, `content`, `category`) values";
$valuesArr = array();
foreach($data as $row){
$title = mysql_real_escape_string( $row['title'] );
$content = mysql_real_escape_string( $row['content'] );
$category = mysql_real_escape_string( $row['category'] );
$valuesArr[] = "('$title', '$content', '$category')";
}
$sql .= implode('title', 'content' , 'category' , $valuesArr);
mysql_query($sql) or exit(mysql_error());
}
?>
它说没有选择数据库
第二次更新
<?php
$servername = "localhost";
$username = "xxxx";
$password = "xxxxx";
$db_name = "xxxxx";
// Create connection
$link = mysql_connect($servername, $username, $password, $db_name);
if(!$link){
echo "Failed" .mysql_connect_error();
}
mysql_select_db($db_name);
$data = array (
[1] => array(
'eng_title' => "john",
'tel_title' => "john",
'category' => "john",
),
[2] => array(
'eng_title' => "john",
'tel_title' => "john",
'category' => "john",
),
[3] => array(
'eng_title' => "john",
'tel_title' => "john",
'category' => "john",
),
);
if(is_array($data)){
$sql = "INSERT INTO `table_a`( `eng_title`, `tel_title`, `category`) values";
$valuesArr = array();
foreach($data as $row){
$eng_title = mysql_real_escape_string( $row['eng_title'] );
$tel_title = mysql_real_escape_string( $row['tel_title'] );
$category = mysql_real_escape_string( $row['category'] );
$valuesArr[] = "('$eng_title', '$tel_title', '$category')";
}
$sql .= implode(',', $valuesArr);
mysql_query($sql) or exit(mysql_error());
}
?>
分配给$valuesArr[]
时,您没有使用变量,因为您忘记了$
前缀。它应该是:
$valuesArr[] = "('$title', '$content', '$category')";
出现“未选择数据库”错误的原因是,您从未调用
mysql_select_db()
$link = mysql_connect($servername, $username, $password);
if(!$link){
die("Failed" .mysql_connect_error());
}
mysql_select_db($db_name);
您不能将数据库作为
mysql_connect
的参数(您将其与
mysqli_connect
混淆了-您确实应该将
mysql
转换为
mysqli
或
PDO
)。
您的
implode()
呼叫是错误的。它应该是:
$sql .= implode(',', $valuesArr);