使用php将复选框值保存到数据库[关闭]
Posted
技术标签:
【中文标题】使用php将复选框值保存到数据库[关闭]【英文标题】:Save checkbox values to database with php [closed] 【发布时间】:2012-04-01 21:03:06 【问题描述】:您好,我有一个小问题,我有一个复选框列表,我想将该列表的值保存到我的数据库 (sjaak_db) 中的产品表中。但我现在只是不知道如何用 php 来做。
<ul id="selectable">
<input type="checkbox" id="checkbox-G1" value="Knoflook" name="knoflook"><label for="checkbox-G1">Knoflook</label>
<input type="checkbox" id="checkbox-G2" value="Tabasco" name="tabasco"><label for="checkbox-G2">Tabasco</label>
<input type="checkbox" id="checkbox-G3" value="Oregano" name="oregano"><label for="checkbox-G3">Oregano</label>
</ul>
<input type='submit' name='submit' value='Save' /><label>Save</label>
所以我要做的是在按下保存按钮后立即将列表的值保存在数据库中
【问题讨论】:
【参考方案1】:这是一个比您可能意识到的更大的话题。我假设您使用 mysql 作为数据库。
这里有一些教程可以帮助您入门:
http://www.freewebmasterhelp.com/tutorials/phpmysql
http://www.tizag.com/mysqlTutorial/
注意:
在编写 SQL 时,必须小心避免 SQL 注入。上面的教程可能不够清楚。在 PHP 中,可以使用 PDO 的预处理语句:
http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/
http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers
【讨论】:
请不要使用w3schools作为参考。他们很烂。尤其是在这个主题上,因为他们正在教你如何制作你的应用程序vulnerable to SQL injection。 那个freewebmasterhelp教程也教SQL注入漏洞。 Tigzig,奇迹般地,实际上懒得提及它......但他们将它隐藏在“高级”部分(它不是高级的,它是基本的)并且仍然使用手动转义而不是 PDO 绑定变量。 有没有好的 PDO 初学者教程?令人沮丧的是,其他人教的是不好的做法。 您可以检查这些链接:phpclasses.org/package/…phpro.org/tutorials/Introduction-to-PHP-PDO.htmlnet.tutsplus.com/tutorials/php/…【参考方案2】:你可以使用 php 的$_POST[] 方法。例如保存下面的代码,如“saveDb.php”,然后将你的html表单的操作方法设置为这个php页面。
if (isset($_POST['Save'])) //
if (isset($_POST['checkbox-G1']))
// define var like "$CheckBox1Value" for all checkboxes
$CheckBox1Value = $_POST['checkbox-G1']; // you can duplicate this row for other checkboxes
之后,您可以将该值插入到您的数据库表中。
【讨论】:
【参考方案3】:您必须使用 php。首先,我们还需要您要存储选项的表(在数据库中)的名称。假设您只有 X 个选项。如果您有可变数量的选项,我会采用其他方法。我假设您的表名为“tablename”,不同的列是“knoflook”、“tabasco”、“oregano”。您想将每个选项存储在不同的 mysql 列中,所以我会这样做:
<?php
$con_mysql = mysql_connect(servername,username,password); //Connect to mysql
if (!$con_mysql) //if it cannot connect...
die('Could not connect: ' . mysql_error()); //...displays error
$con_db = mysql_select_db(sjaak_db, $con_mysql); //Connect to database
if (!$con_db) //if it cannot connect...
die('Could not connect: ' . mysql_error()); //...displays error
// Escape and save each value
$Knoflook=mysql_real_escape_string($_POST['knoflook']);
$Tabasco=mysql_real_escape_string($_POST['tabasco']);
$Oregano=mysql_real_escape_string($_POST['oregano']);
// Save them into the database
mysql_query("INSERT INTO tablename (knoflook, tabasco, oregano) VALUES('$Knoflook', '$Tabasco', '$Oregano' ) ") or die(mysql_error());
// Close the conexion
mysql_close($con_db);
?>
现在,您可能想要对它们做很多事情,例如检查答案是否已设置 (isset ($_POST['knoflook'])) 等等。另外,如果有很多选项,请说出来,我会尝试适应它。
【讨论】:
以上是关于使用php将复选框值保存到数据库[关闭]的主要内容,如果未能解决你的问题,请参考以下文章