Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP和MySQL上使用下拉菜单同时删除和插入_Php_Mysql_Drop Down Menu - Fatal编程技术网

如何在PHP和MySQL上使用下拉菜单同时删除和插入

如何在PHP和MySQL上使用下拉菜单同时删除和插入,php,mysql,drop-down-menu,Php,Mysql,Drop Down Menu,我在尝试同时使用下拉菜单插入和删除时遇到问题 <div id="blabla"> <div style="position: relative;"> <p style="position: absolute; top: 185px; left: 58px;"> <select name="lista"> <option selected="selected"&

我在尝试同时使用下拉菜单插入和删除时遇到问题

<div id="blabla">
    <div style="position: relative;">
        <p style="position: absolute; top: 185px; left: 58px;">  
            <select name="lista">
                <option selected="selected"></option>
                <optgroup label="Selecciona">
                    <option> Option 1</option>
                    <option> Option 2</option>
                    <option> Option 3</option>
                    <option> Option 4</option>
                    <option> Option 5</option>
                </optgroup>
            </select>

选择1 选择2 选择3 选择4 备选案文5

这是ADD.php代码

   <html>
<head>
</head>
<body>

 <?php
if(isset($_POST['justifica']) && !empty($_POST['justifica']) &&
isset($_POST['si']) && !empty($_POST['si']) &&
isset($_POST['lista']) && !empty($_POST['lista']))
{
mysql_connect("123", "123", "p123") or die(mysql_error()) ; 
mysql_select_db("123") or die(mysql_error()) ; 

mysql_query("INSERT INTO dos (lista,justifica,si) VALUES ('$_POST[lista]','$_POST[justifica]','$_POST[si]')");
mysql_query("DELETE FROM dos2 WHERE lista5='$_POST[lista]')");
if ($_POST['value'] === '') {
    $_POST['value'] = null; // null en mayuscula si es SQL
}
echo "<img src=imagenes/Satisf.jpg>";
}else{
echo "<img src=imagenes/Error.jpg>";
}
?>

</body>
</html>


我会用MySQLi来做这个,我更喜欢OOP

<?php

class MyDBHandle
{
    public $objDB;

    //Creates the DB Object
    public function Init($strHost, $strUsername, $strPassword, $strDB)
    {
        $this->objDB = new mysqli($strHost, $strUsername, $strPassword, $strDB);

    }

    //SQL Query 1
    public function Dos($strLista, $strJustifica, $strSi)
    {
        $objStatement = $this->objDB->prepare("INSERT INTO dos ('lista', 'justifica', 'si') VALUES (?, ?, ?)");
        $objStatement->bind_param("sss",
                $strLista, 
                $strJustifica, 
                $strSi);

        $objStatement->execute();
        $objStatement->free_result();
    }

    //SQL Query 2
    public function Dos2($strLista)
    {

        $objStatement = $this->objDB->prepare("DELETE FROM dos2 WHERE lista2=?");
        $objStatement->bind_param("s",
                $strLista);

        $objStatement->execute();
        $objStatement->free_result();
    }

    //disconnect from the db
    public function Disconnect()
    {
        $this->objDB->Close();
    }
}

//db variables
$dbHost = "xxx";
$dbUser = "xxx";
$dbPass = "xxx";
$dbDB = "xxx";

//initialize and connect to the DB
$objDB = new MyDBHandle();
$objDB->Init($dbHost, $dbUser, $dbPass, $dbDB);

//here is a moded version of your code to execute the new methods
if(isset($_POST['justifica']) && !empty($_POST['justifica']) &&
isset($_POST['si']) && !empty($_POST['si']) &&
isset($_POST['lista']) && !empty($_POST['lista']))
{
    $objDB->Dos($_POST['lista'], $_POST['justifica'], $_POST['si']);
    $objDB->Dos2($_POST['lista']);
}
$objDB->Disconnect();


?>

这个问题的答案太明显了。它不会在将来帮助任何人。@developerwk是吗?我不知道答案是什么,我想我是个笨蛋。用户3583216 dos和dos2之间的关系是什么,我们如何知道您要删除的id?您是否试图在“dos”中插入一行,将“选项1”作为
lista
,并在“dos2”中删除一行,将“选项1”作为
lista
?我知道这听起来有些多余,但我想澄清一下你的英语。如果是这种情况,那么您确实需要两个查询,第二个查询就是:
DELETE FROM dos2 WHERE lista2='$\u POST[lista]'
@laughbor耶,这就是我想要的!,为什么你的意思是我不需要两个查询?我需要合并它们还是什么?您可能需要通过以下三种方式之一来执行此操作:1)在事务中执行两种查询操作以使操作原子化2)在insert表上创建触发器以自动删除删除表中的行3)编写存储过程来包装insert和delete操作。调用成员非对象(第23行,第一个绑定)上的函数bind_param()如果您看到,所有的DB代码都写在“类MyDBHandle{…}”中。您必须在初始化对象时使用“$objDB=new MyDBHandle()”将其写在上面。就像你必须在你使用它的区域上面写一个函数一样。是这样写的(和你发布的代码一样,我唯一改变的是db变量)。。你的意思是我必须添加更多的代码还是什么?我在Dos2中有一些糟糕的代码(我的一些模板代码)。重新复制剂量2。抱歉。仍然给我一个错误,在第24行的非对象上调用成员函数bind_param(),我无法找出问题所在:/