Php 如何通过下拉列表选择MySQL表
比如我有 我的数据库中有两个表,第一个是列表1,第二个是列表2Php 如何通过下拉列表选择MySQL表,php,mysql,Php,Mysql,比如我有 我的数据库中有两个表,第一个是列表1,第二个是列表2 <select> <option name='select' value="0">Select</option> <option value="list1">List1</option> <option value="List2">List2</option> </select> 这是完整的代码 <?php } /
<select>
<option name='select' value="0">Select</option>
<option value="list1">List1</option>
<option value="List2">List2</option>
</select>
这是完整的代码
<?php
}
//connect to database
mysql_connect('localhost','root','');
mysql_select_db('pdsd');
// check if the form has been submitted. If it has, start to process the form and save it to the database
if (isset($_POST['submit']))
{
// get form data, making sure it is valid
$title = mysql_real_escape_string(htmlspecialchars($_POST['title']));
$subject = mysql_real_escape_string(htmlspecialchars($_POST['subject']));
// check to make sure both fields are entered
if ($title == '' || $subject == '')
{
// generate error message
$error = 'ERROR: Please fill in all required fields!';
// if either field is blank, display the form again
renderForm($title, $subject,$date, $error);
}
else
{
// save the data to the database
$tables = array('list1', 'list2');
if (in_array($_POST['select'], $tables)) {
mysql_query("INSERT {$_POST['select']} SET title='$title',subject='$subject'");
}
or die(mysql_error());
echo "<center>Succesfully add</center>";
echo "<script>setTimeout(\"location.href = 'login.php';\",1500);</script>";
// once saved, redirect back to the view page
}
}
else
// if the form hasn't been submitted, display the form
{
renderForm('','','','','','','','','','','','','','','','','','','','');
}
?>
如我在注释中所述,使用一个条件语句和两个基于条件语句的独立查询,以及选择值等于所选值的内容
例如,假设您使用纯PHP并使用表单:
旁注:您需要在这里使用自己的查询,如注释的//查询列表X
中所示
另一个旁注:name
属性属于
,而不是
最后一句话:我省略的action=”“
等于“self”。因此,如果希望使用单独的文件,可以向其中添加action=“handler.php”
<form method="post">
<select name="select">
<option value="0">Select</option>
<option value="list1">List1</option>
<option value="list2">List2</option>
</select>
<input type = "submit" name = "submit" value = "Submit">
</form>
<?php
if(isset($_POST['submit'])){
if(isset($_POST['select']) && $_POST['select'] == 'list1'){
// query for LIST 1
}
if(isset($_POST['select']) && $_POST['select'] == 'list2'){
// query for LIST 2
}
if(isset($_POST['select']) && $_POST['select'] == '0'){
// Do nothing
}
}
正如我在注释中所述,使用一个条件语句和两个基于条件语句的独立查询,以及选择值等于所选值的内容
例如,假设您使用纯PHP并使用表单:
旁注:您需要在这里使用自己的查询,如注释的//查询列表X
中所示
另一个旁注:name
属性属于
,而不是
最后一句话:我省略的action=”“
等于“self”。因此,如果希望使用单独的文件,可以向其中添加action=“handler.php”
<form method="post">
<select name="select">
<option value="0">Select</option>
<option value="list1">List1</option>
<option value="list2">List2</option>
</select>
<input type = "submit" name = "submit" value = "Submit">
</form>
<?php
if(isset($_POST['submit'])){
if(isset($_POST['select']) && $_POST['select'] == 'list1'){
// query for LIST 1
}
if(isset($_POST['select']) && $_POST['select'] == 'list2'){
// query for LIST 2
}
if(isset($_POST['select']) && $_POST['select'] == '0'){
// Do nothing
}
}
您应该首先验证输入是否有效,然后将其替换为SQL
$tables = array('list1', 'list2');
if (in_array($_POST['select'], $tables)) {
mysql_query("INSERT INTO {$_POST['select']} SET title='$titile', subject='$subject'") or die(mysql_error());
}
确保正确转义变量$titile
和$subject
(如果它们来自用户输入),以防止SQL注入(使用mysql\u real\u escape\u string()
)。如果您使用MySQLI或PDO,那么就更好了,这样您就可以使用准备好的语句而不是将变量替换到查询中。您应该首先验证输入是否有效,然后才可以将其替换到SQL中
$tables = array('list1', 'list2');
if (in_array($_POST['select'], $tables)) {
mysql_query("INSERT INTO {$_POST['select']} SET title='$titile', subject='$subject'") or die(mysql_error());
}
确保正确转义变量$titile
和$subject
(如果它们来自用户输入),以防止SQL注入(使用mysql\u real\u escape\u string()
)。如果您使用MySQLI或PDO,则更好,这样您就可以使用一个准备好的语句,而不是将变量替换到查询中。simple,使用一个条件语句和两个基于条件语句的单独查询。Name应该转到select not option请。已在PHP7中删除。了解使用PDO的语句,并考虑使用PDO,也有SQL错误插入XXX集YYY=BBB…此外,您可以只在查询中包含变量(如果两个表具有相同的结构),例如“插入$table…”,其中table将是select HTML标记的名称。简单地说,使用一个条件语句和两个基于条件语句的单独查询。名称应转到select not OPTIONQUESE。已在PHP7中删除。了解使用PDO的语句,并考虑使用PDO,也有SQL错误插入XXX集YYY=BBB…此外,您可以只在查询中包含变量(如果两个表具有相同的结构),例如“插入$table…”,其中table将是select HTML标记的名称。使用语句将不会太混乱。@tadman我同意这是我之前想到的,但我不记得如何使用内存执行这些操作。我凭记忆把这些都打了出来;-)很高兴知道你还拥有它@tadman嘿嘿,有时候我会想lol,但通常一个双倍的浓缩咖啡镜头会把我踢回挡位。@tadman所以我认为(浓缩咖啡)镜头越强,代码的马力就越大;-)我同意这是我之前的想法,但我不记得如何用记忆来做这些。我凭记忆把这些都打了出来;-)很高兴知道你还拥有它@tadman嘿嘿,有时候我会想lol,但通常一个双倍的浓缩咖啡镜头会把我踢回挡位。@tadman所以我认为(浓缩咖啡)镜头越强,代码的马力就越大;-)@tadman对照列表检查后,我没有发现问题。@tadman我说的是$\u POST['select']
。其余的不在问题的范围之内。它说$title
是从哪里来的$\u POST
数据?你怎么知道他在分配给$title
和$subject
时没有使用mysql\u real\u escape\u string
?这些代码都不是问题。我只是演示了如何使用变量表名,我不打算在这里调试他的代码中的所有问题。我在这里的具体抱怨是,将$\u POST
数据直接放在查询中意味着存在单点故障。如果白名单代码生成新变量,则意外禁用白名单代码会使查询以安全的方式自动失败。它不会突然将其武器化“插入$table\u name…”
是一种更安全的方法,因为$table\u name
来自查找数组、开关或其他东西。@tadman对照列表检查后,我没有发现问题。@tadman我说的是$\u POST['select']
。其余的不在问题的范围之内。它说$title
是从哪里来的$\u POST
数据?你怎么知道他在分配给$title
和$subject
时没有使用mysql\u real\u escape\u string
?这些代码都不是问题。我只是演示了如何使用变量表名,我不打算在这里调试他的代码中的所有问题。我在这里的具体抱怨是,将$\u POST
数据直接放在查询中意味着存在单点故障。如果白名单代码生成新变量,则意外禁用白名单代码会使查询以安全的方式自动失败。它不会突然将其武器化<代码>“插入$table\n