首页 \ 问答 \ MySql如何在if语句中结合2个查询(MySql how to union 2 queries within if statements)

MySql如何在if语句中结合2个查询(MySql how to union 2 queries within if statements)

这里我的表单和mysql / php代码。

如果两个复选框都被选中,则mysql不会执行查询。 有没有办法让这个表格正常工作?

MySQL的

 if (isset($_POST['A']) && !empty($_POST['A'])) {
 $query= "SELECT * FROM (SELECT * FROM myTable WHERE...) as A WHERE Column1='y'";
 }
 if (isset($_POST['B']) && !empty($_POST['B'])) {
 $query= "SELECT * FROM (SELECT * FROM myTable WHERE...) as B WHERE Column2='y'";
 }

形成

<form id="myform1" class="myform1" method="post" name="myform1">
<input type="checkbox" name="A[]" id="A" value="y" />
<input type="checkbox" name="B[]" id="B" value="y" />
<input id="submit" type="submit" name="submit" value="Submit" 
onclick="return submitForm1()" />
</form>

任何帮助赞赏。 谢谢


Here my form and the mysql/php code.

if the 2 checkboxes are both checked mysql doesn't execute the queries. Is there any way to have this form working properly?

MySQL

 if (isset($_POST['A']) && !empty($_POST['A'])) {
 $query= "SELECT * FROM (SELECT * FROM myTable WHERE...) as A WHERE Column1='y'";
 }
 if (isset($_POST['B']) && !empty($_POST['B'])) {
 $query= "SELECT * FROM (SELECT * FROM myTable WHERE...) as B WHERE Column2='y'";
 }

Form

<form id="myform1" class="myform1" method="post" name="myform1">
<input type="checkbox" name="A[]" id="A" value="y" />
<input type="checkbox" name="B[]" id="B" value="y" />
<input id="submit" type="submit" name="submit" value="Submit" 
onclick="return submitForm1()" />
</form>

Any help appreciated. Thank you


原文:https://stackoverflow.com/questions/17956292
更新时间:2023-11-03 17:11

最满意答案

可能会发生的是他们正在注入自己的主题。 如果您的下拉值是字符串,并且您只是按原样使用它们,那么使用您自己的主题非常容易。

作为修复,您可以将数字ID与每个下拉值绑定,然后在后端,在可能的值之间切换。 例如(在PHP中)

<?php
$reject = false;
if(isset($_POST['subject']))
{
    switch(intval($_POST['subject']))
    {
        case 1: // General inquiry:
           $subjectStr = "General Inquiry";
           break;
        ...
        default: 
           $reject = true;
           break;
    }
}
else
{
    $reject = true;
}
if(!$reject)
{
    // Process email
}
?>

What's probably going on is that they're injecting their own subject. If your dropdown values are strings and you're just using them as is, it's pretty easy to use your own subject.

As a fix, you could tie a numerical ID to each dropdown value, then on the backend, do a switch between the possible values. For example (in PHP)

<?php
$reject = false;
if(isset($_POST['subject']))
{
    switch(intval($_POST['subject']))
    {
        case 1: // General inquiry:
           $subjectStr = "General Inquiry";
           break;
        ...
        default: 
           $reject = true;
           break;
    }
}
else
{
    $reject = true;
}
if(!$reject)
{
    // Process email
}
?>

相关问答

更多
  • 您的网站不会受到损害。 验证码只是阻止机器人一遍又一遍地提交表单。 这就好像一个人快速填写表格并点击提交并一遍又一遍地做了这一点。 没有任何安全漏洞。 Captchas非常擅长防止僵尸垃圾邮件。 你可以做的一个聪明的事情就是制作一个隐藏的输入字段,让它非常吸引机器人填写它,没有验证或任何东西,标签和名称像“姓氏”,这是常见的,但你还没有使用。 提交表单时,该值将发送到服务器。 由于一个人无法看到输入,因此填写的唯一方法是机器人在文档中找到它并将其填满。 因此,如果您发现此值,请不要发送邮件。 更多相关信息( ...
  • 任何人都可以建议在表格上反对垃圾邮件的最佳方法 - 我们已经有了验证码,但垃圾邮件似乎仍然存在。 我喜欢“蜜罐”技术。 基本上在表单上放置一个隐藏字段,值为空值。 验证字段作为表单提交的一部分。 如果字段!=空 - 那么它是一个机器人,所以提交失败。 机器人倾向于自动填写表单上的所有字段。 是否可以执行以下操作...在表单上检查POST请求是否来自从该站点提交的表单(而不是使用相同操作的表单)。 如果请求来自网站接受,否则不要简单地忽略该请求。 是的 - 它名为CSRF - Codeigniter内置它。在 ...
  • 可能会发生的是他们正在注入自己的主题。 如果您的下拉值是字符串,并且您只是按原样使用它们,那么使用您自己的主题非常容易。 作为修复,您可以将数字ID与每个下拉值绑定,然后在后端,在可能的值之间切换。 例如(在PHP中)
  • 使用PHP,您可以使用preg_match()和strip_tags()或两者的组合来尝试两件事。 下面将清理textarea,也可以将其转义为数据库。 提交表单后试试这个。 $post = array(); foreach($_POST as $k => $v){ // strip all HTML and escape values for database $post[$k] = strip_tags(mysql_real_escape_string($v)); } // check of w ...
  • 好吧,如果你想绕过spambot发布空白条目而不添加captcha插件/图像等。 选项1: 使用正常的验证码,我们强制用户填写验证码值并在发布表单时在服务器端验证相同但使用此技巧我们将采用相反的方式。 默认情况下,禁用javascript的所有spambot访问站点。 它们通常被编码以填充所有表单字段。 所以你可以做的是在表单中添加一个带有任何名称的隐藏字段,让我们说“ hidden_captcha ”。 现在你的服务器端代码就像是,如果填充了该隐藏字段,则该条目由spambot发布,因为普通访问者无法看到 ...
  • 简单的蜜罐例子,这是我见过的最有效的方法,不涉及ip禁止和东西。 您希望在表单上添加一个您打算让用户不填写的字段。 然后在前端用javascript隐藏它。 机器人不会有JavaScript,所以他们会看到这个字段并填写它。 将它命名为“必需”或“first_name”等重要内容。 那么你的PHP: if($_POST['first_name']){ //YA FILTHY BOT! } else{ //process form } Simple honeypot example whi ...
  • Ninja Forms无法做到这一点,请将此问题改为: 4之后的数字是多少?(数字) 我还建议不要使用Ninja Form反垃圾邮件字段作为保护,问题是静态的,因此机器人仍然可以创建大量的联系表单应用程序。 This is not possible with Ninja Forms, Rephrase your question like this: What is the number after 4?(Numeric) I also suggest not using Ninja Form anti-s ...
  • 这是Contact Form 7和某些主机上的某些php邮件或服务器设置的常见问题。 尝试在“邮件”部分的“发件人:”字段中对发件人姓名进行硬编码,例如Webmail 这意味着您不会将发件人姓名或电子邮件视为姓名并返回电子邮件。收件箱,但这并不重要,因为发件人的电子邮件将在邮件正文中。 如果这不起作用,请尝试https://wordpress.org/plugins/wp-mail-smtp/使用SMTP而不是php邮件。 请参阅http://co ...
  • 将其作为验证码的替代方案。 然后,您可以使用现有的类来验证该字段。 假设您的隐藏字段名称为“fakeField”您可以使用您的validateSTR方法通过..验证它。 $v->validateStr($fakeField, "fakeField",0,0); 由于你的str检查是检查>和<而不是> =和<=当长度正好为0时,这将返回true。对于那些代码知识很少的人来说,这可能是一个更容易的解决方案。 或者,如果你坚持使用排序的验证码,并且你知道你期望值是什么,你可以添加一个方法来检查你期望的值。 方法 ...
  • 丹尼尔, 我有一个类似的垃圾邮件检测方法,自去年以来已经到位。 我可以分享我所看到的。 基于会话的测试:检查某人填写表单并检查用户来自正确页面的时间是非常可靠的检查,尽管有些困难。 在您的情况下,强制用户使用支持JavaScript的现代浏览器可能是您的最佳选择。 看起来它似乎正在成为一种更为公认的做法,我想,对吧? 我真的不知道.. 基于内容的测试:另外两个相当有用的做法是检查表单字段是否包含不同的值,并且输入的URL不超过指定数量。 垃圾邮件发送者似乎总是将相同的垃圾URL粘贴到每个字段中。 但是,这些 ...

相关文章

更多

最新问答

更多
  • h2元素推动其他h2和div。(h2 element pushing other h2 and div down. two divs, two headers, and they're wrapped within a parent div)
  • 创建一个功能(Create a function)
  • 我投了份简历,是电脑编程方面的学徒,面试时说要培训三个月,前面
  • PDO语句不显示获取的结果(PDOstatement not displaying fetched results)
  • Qt冻结循环的原因?(Qt freezing cause of the loop?)
  • TableView重复youtube-api结果(TableView Repeating youtube-api result)
  • 如何使用自由职业者帐户登录我的php网站?(How can I login into my php website using freelancer account? [closed])
  • SQL Server 2014版本支持的最大数据库数(Maximum number of databases supported by SQL Server 2014 editions)
  • 我如何获得DynamicJasper 3.1.2(或更高版本)的Maven仓库?(How do I get the maven repository for DynamicJasper 3.1.2 (or higher)?)
  • 以编程方式创建UITableView(Creating a UITableView Programmatically)
  • 如何打破按钮上的生命周期循环(How to break do-while loop on button)
  • C#使用EF访问MVC上的部分类的自定义属性(C# access custom attributes of a partial class on MVC with EF)
  • 如何获得facebook app的publish_stream权限?(How to get publish_stream permissions for facebook app?)
  • 如何防止调用冗余函数的postgres视图(how to prevent postgres views calling redundant functions)
  • Sql Server在欧洲获取当前日期时间(Sql Server get current date time in Europe)
  • 设置kotlin扩展名(Setting a kotlin extension)
  • 如何并排放置两个元件?(How to position two elements side by side?)
  • 如何在vim中启用python3?(How to enable python3 in vim?)
  • 在MySQL和/或多列中使用多个表用于Rails应用程序(Using multiple tables in MySQL and/or multiple columns for a Rails application)
  • 如何隐藏谷歌地图上的登录按钮?(How to hide the Sign in button from Google maps?)
  • Mysql左连接旋转90°表(Mysql Left join rotate 90° table)
  • dedecms如何安装?
  • 在哪儿学计算机最好?
  • 学php哪个的书 最好,本人菜鸟
  • 触摸时不要突出显示表格视图行(Do not highlight table view row when touched)
  • 如何覆盖错误堆栈getter(How to override Error stack getter)
  • 带有ImageMagick和许多图像的GIF动画(GIF animation with ImageMagick and many images)
  • USSD INTERFACE - > java web应用程序通信(USSD INTERFACE -> java web app communication)
  • 电脑高中毕业学习去哪里培训
  • 正则表达式验证SMTP响应(Regex to validate SMTP Responses)