我有一个表单值数组,可以从一个页面发布到另一个页面。
$_POST['ingredients'];
数组中的项目以ingredients[]
。
我如何连接所有值并将它们放入数据库中一行的一个字段
mysql代码的一个例子是完美的。
由于
$ingredient_method = $_POST['conValue'];
$ingredient_type = $_POST['OneWordDescription'];
$ingredient_element = $_POST['ingredients'];
$sql="INSERT INTO tbl_Recipe (recipe_id, ingredient_method, ingredient_type, ingredient_element)
VALUES
('',$_POST[conValue]','$_POST[OneWordDescription]','$_POST[ingredients]')";
if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
答案 0 :(得分:4)
您有几个选择:
INNER JOIN
或LEFT JOIN
之类的内容将数据拉出来。<强>更新强>:
既然您已经发布了代码,我建议您不要使用mysql_*
函数。它们已被弃用。使用mysqli或PDO。此外,始终对您从用户收到的值使用mysqli_real_escape_string或PDO::quote,以防止SQL注入攻击。
以下是使用serialize
和PDO的示例:
//get the array
$ingredient_method = $_POST['conValue'];
$ingredient_type = $_POST['OneWordDescription'];
$ingredient_elements = $_POST['ingredients'];
if(!is_array($ingredient_elements)) {
//do some error handling
}
//connect to the database
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$pass = 'dbpass';
try {
$pdo = new PDO($dsn, $user, $pass);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
//serialize the string
$elements_str= serialize($ingredient_elements);
//prepare sql
$sql = 'INSERT INTO tbl_Recipe '.
'(recipe_id, ingredient_method, ingredient_type, ingredient_element) '.
'VALUES ( '.
'"",'. //recipe_id
$pdo->quote($ingredient_method).','.
$pdo->quote($ingredient_type ).','.
$pdo->quote($elements_str).
')';
// insert into database
$con->query($sql);
答案 1 :(得分:0)
好的,不知道你是如何得到一个阵列的成分但是如果是这种情况那么我们就去了。
首先你可以使用implode加入数组,但检查一下是否有任何东西可以避免抛出警告。
//check if $_POST['ingredients'] is available if not then use empty string
$ingredient_element = isset($_POST['ingredients']) ? $_POST['ingredients'] : "";
join the array
$ingredient_element = implode(" ", $ingredient_element);
现在你至少可以使用mysql_real_escape_string来清理你的字符串,但我建议你学习mysqli或PDO,因为不推荐使用mysql_函数。
//sanitize
$ingredient_element = mysql_real_escape_string($ingredient_element);
然后在insert sql中使用$ ingredient_element
$ sql =“INSERT INTO tbl_Recipe(recipe_id,ingredient_method,ingredient_type,ingredient_element) VALUES ( '',$$ ingredient_method”, '$ ingredient_type', '$ ingredient_element')“;
如果recipe_id是一个自动增量的整数id,你可以把它留空,但如果你必须在那里使用,你必须在''
的地方使用NULL