在mysql中插入字符串和数组的组合

pzfprimi  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(400)

我在这里也发现了类似的问题,但没有一个完全适合我的情况。我需要从一组数组和重复字符串的值的组合中为数据库创建多个条目。举个例子:

$sql = "INSERT INTO sonch_MAIN.Concert (venue_id, date, ensemble_id, info, title, repertoire, time)
VALUES ('$venue', '$date', '1', '$info', '$title', '$repertoire_formatted', $time)";
``` `$venue` ,  `$time` ,和 `$date` 是数组。 `'1'` 应添加到数据库的每个条目中,而不进行更改。 `$info` ,  `$title` ,和 `$repertoire_formatted` 对于数据库中的每个条目,应该重复的字符串,即插入时没有任何变化。
因此,下面的示例显示了每个变量的内容:

$venue = array('venue1', 'venue7', 'venue50');
$date = array('2019-01-01', '2019-02-02', '2019-03-03');
$time = array('20:00:00', '19:00:00', '18:00:00');
$info = 'General info about this event';
$repertoire_formatted = 'Music that people will play at this event';

我的sql数据库被设置为为为每个输入变量获取不同类型的数据。
以下是我的代码(不工作):

session_start();
$_SESSION["servername"] = "localhost";
$_SESSION["username"] = "sonch_nB";
$_SESSION["password"] = 'hello';
$_SESSION["dbname"] = "sonch_MAIN";
date_default_timezone_set('Europe/Zurich');

$venue = ($_POST['venue']);
$date = ($_POST['date']);
$ensemble_id = '1'; //THIS WILL BE SET VIA LOGIN
$info = ($_POST['info']);
$title = ($_POST['title']);
//FORMAT INCOMING VARS CODE SKIPPED//

// Create connection
$conn = new mysqli($_SESSION['servername'], $_SESSION['username'], $_SESSION['password'], $_SESSION['dbname']);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

//NEED TO LOOP INPUT TO MYSQL NUMBER OF VALUES IN ARRAY
$stmt = $conn->prepare("INSERT INTO sonch_MAIN.Concert (venue_id, date, ensemble_id, info, title, repertoire, time) VALUES (?, ?, '1', ?, ?, ?, ?)");
$stmt->bind_param("ssssss", $v, $d, $info, $title, $repertoire_formatted, $t);
for ($i = 0; $i < count($venue); $i++) {
$v = $venue[$i];
$d = $date[$i];
$t = $time[$i];
$stmt->execute();
}

if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "" . $conn->error;
}

$stmt->close();

qf9go6mv

qf9go6mv1#

你应该用事先准备好的陈述。在mysqli中(假设您的连接是 $conn ):

$stmt = $conn->prepare("INSERT INTO sonch_MAIN.Concert (venue_id, date, ensemble_id, info, title, repertoire, time)
VALUES (?, ?, '1', ?, ?, ?, ?)");
$stmt->bind_param("ssssss", $v, $d, $info, $title, $repertoire_formatted, $t);
for ($i = 0; $i < count($venue); $i++) {
    $v = $venue[$i];
    $d = $date[$i];
    $t = $time[$i];
    if ($stmt->execute() === TRUE) {
        echo "New record created successfully";
    } else {
         echo "Error: " . $conn->error;
    }
}
$stmt->close();

相关问题