是否可以将多个条目添加到一列中,而将单个条目添加到其他列中?
例如
$sql="INSERT INTO The_table (firstname, lastname, address) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[address]'";
然后我有多个复选框条目需要插入 - 年龄、衬衫尺码、高度在一个名为 about 的列中。
我将如何编写 $sql 语句?
最佳答案
您可以非常轻松地在 PHP 中连接一个字符串,然后将其放入 SQL 插入查询中。
$about = "AGE: $_POST[age]\nSHIRT SIZE: $_POST[shirt_size]\nHEIGHT: $_POST[height]";
$sql = "INSERT INTO The_table (firstname, lastname, address, about) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[address]', '$about')";
当然你应该准备你的声明并使用适当的绑定(bind)值来代替:
$sql = "INSERT INTO The_table (firstname, lastname, address, about) VALUES (?, ?, ?, ?)";
// now prepare, bind and execute
如果您不执行准备/绑定(bind)操作,那么您就是在寻求安全方面的问题。至少您需要对用户提供的数据应用适当的转义机制。
从 http://php.net/manual/en/mysqli-stmt.execute.php 复制示例并为您修改它:
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* Prepare an insert statement */
$query = "INSERT INTO The_table (firstname, lastname, address, about) VALUES (?,?,?,?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("ssss", $_POST['first'], $_POST['last'], $_POST['address'], $about);
/* here's where you do your special assignments */
$about = "AGE: $_POST[age]\nSHIRT SIZE: $_POST[shirt_size]\nHEIGHT: $_POST[height]";
/* Execute the statement */
$stmt->execute();
/* close statement */
$stmt->close();
关于php - 将多个条目插入一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29185242/