【发布时间】:2012-08-17 09:47:01
【问题描述】:
简单来说,我有一个包含三个相同输入字段的表单。名称不同;但是,发布时它们具有相同的结构,只是名称前缀不同(即三个系统具有不同的名称前缀:它们将是 windowstitle、mactitle、linuxtitle 等)。
目前我有一个进程只能处理一个同名文件,即 windowstitle(当然,如果表格已填写)
代码如下所示:
<?php
$title = $_POST['windowstitle'];
//validate info or redirect
if ($title != "" ) {
$title = mysql_real_escape_string($title);
$sql = "insert into newwindows (title) values ('$title');
$result = mysql_query($sql) or die ("Could not insert data into DB: " . mysql_error());
?>
表单块也看起来像这样
<form action="newuserprocess.php" method="post" enctype="multipart/form-data">
<div class="form">
<h3>Windows</h3>
<!-- title of system name -->
<p><label for="windowstitle"> edition of system </lable></p>
<input type="text" name="windowstitle" size=20 /><br />
</div>
<div class="form">
<h3>Mac</h3>
<!-- title of system name -->
<p><label for="mactitle"> edition of system </lable></p>
<input type="text" name="mactitle" size=20 /><br />
</div>
<p><input type="submit" id="submit" class="bigbutton" value="Upload" /></p>
</form>
但是,这留下了其他形式,唯一的区别是我想要输入的 db 和 post value 前缀不同。
所以我想出了一个我认为很聪明的解决方案:
<?php
$arr = array('windows', 'mac', 'linux');
foreach ($arr as &$value) {
$title = $_POST['$valuetitle'];
//validate info
if ($title != "" ) {
$title = mysql_real_escape_string($title);
$sql = "insert into new$value (title) values ('$title');
$result = mysql_query($sql) or die ("Could not insert data into DB: " . mysql_error());
}
?>
但是,这不起作用。我知道部分原因;因为'' 使变量按原样显示,因此我的$_Post 将始终以$value 的形式返回。另一个原因与我的 new$value 数据库名称相同。什么是正确的格式?我该如何完成这项工作?
【问题讨论】:
-
您是否错过了
$sql = "insert into newwindows (title) values ('$title');的报价? -
$_POST[$value . "title"]- 直接使用变量,不要引用它。 -
你到底想做什么?这似乎比它需要的复杂得多
-
老实说,这是一个试图从头开始建立起来的小型 cms。该进程具有其他功能,例如上传图像和其他文本字段。我已经包含了要点,因此可以将其应用于更大的图景
标签: php sql arrays post foreach