MySQLi插入If

时间:2015-06-25 17:16:22

标签: php mysql mysqli

我遇到的问题是下面的PHP代码只将数据插入一个表蓝色。我想要的是如果来自POST的目录类别等于例如蓝色INSERT到表蓝色,但是如果它等于黄色INSERT变成黄色,但是如果它等于红色INSERT到表红色。

我发现的唯一答案是处理insert(如果存在)但不是多个insert if语句。任何帮助将不胜感激。我只是在学习PHP代码。

    <?php
//Open a new connection to the MySQL server
$mysqli = new mysqli('localhost','some directory','password','some username');

//Output any connection error
if ($mysqli->connect_error) {
    die('Connection failed : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

//values to be inserted in database table
$firstname  = '$_POST[firstname]'; 
$lastname   = '$_POST[lastname]';
$city       = '$_POST[city]';   
$state      = '$_POST[state]';
$zipcode    = '$_POST[zipcode]';
$directorycategory  = '$_POST[directorycategory]';
$active     = '$_POST[active]';


    $query = ("INSERT INTO blue(
            firstname, lastname, city, state, zipcode, directorycategory, active) VALUES(?, ?, ?, ?, ?, ?, ?)");

    $statement = $mysqli->prepare($query);

    //bind parameters
    $statement->bind_param('sssssss', $_POST['firstname'], $_POST['lastname'], $_POST['city'], $_POST['state'], $_POST['zipcode'], $_POST['directorycategory'], $_POST['active']);

    if($statement->execute()){
       header("some location");
    }else{
        die('Error : ('. $mysqli->errno .') '. $mysqli->error);
    }
    $statement->close();
?>

3 个答案:

答案 0 :(得分:2)

@ oremIpsum1771你的答案是最好的。最终代码如下

     <?php
//Open a new connection to the MySQL server
$mysqli = new mysqli('localhost','some directory','password','some username');

//Output any connection error
if ($mysqli->connect_error) {
    die('Connection failed : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

//values to be inserted in database table
$firstname  = '$_POST[firstname]'; 
$lastname   = '$_POST[lastname]';
$city       = '$_POST[city]';   
$state      = '$_POST[state]';
$zipcode    = '$_POST[zipcode]';
$directorycategory  = '$_POST[directorycategory]';
$active     = '$_POST[active]';


        if($directorycategory  == 'Employer'){
    $query = ("INSERT INTO employer(
            firstname, lastname, city, state, zipcode, directorycategory, active) VALUES(?, ?, ?, ?, ?, ?, ?)");
        }
     else if($directorycategory  == 'Blue'){$query = ("INSERT INTO blue(
        firstname, lastname, city, state, zipcode, directorycategory, active) VALUES(?, ?, ?, ?, ?, ?, ?)"); }
     else if($directorycategory  == 'Green'){$query = ("INSERT INTO green(
        firstname, lastname, city, state, zipcode, directorycategory, active) VALUES(?, ?, ?, ?, ?, ?, ?)"); }
     else if($directorycategory  == 'Red'){$query = ("INSERT INTO red(
        firstname, lastname, city, state, zipcode, directorycategory, active) VALUES(?, ?, ?, ?, ?, ?, ?)"); }
     else if($directorycategory  == 'Orange'){$query = ("INSERT INTO orange(
        firstname, lastname, city, state, zipcode, directorycategory, active) VALUES(?, ?, ?, ?, ?, ?, ?)"); }       

    $statement = $mysqli->prepare($query);

    //bind parameters
    $statement->bind_param('sssssss', $firstname, $lastname, $city, $state, $zipcode, $directorycategory, $active);

    if($statement->execute()){
       header("some location");
    }else{
        die('Error : ('. $mysqli->errno .') '. $mysqli->error);
    }
    $statement->close();
?>

答案 1 :(得分:1)

我没有看到您拥有查询控件结构的位置。如果我正确理解问题,我认为你需要这样的东西:

    if(directorycategory  == 'blue'){$query = ("INSERT INTO blue(
        firstname, lastname, city, state, zipcode, directorycategory, active) VALUES(?, ?, ?, ?, ?, ?, ?)"); }           
    else if(directorycategory  == 'yellow'){$query = ("INSERT INTO yellow(
        firstname, lastname, city, state, zipcode, directorycategory, active) VALUES(?, ?, ?, ?, ?, ?, ?)"); }       

等......

答案 2 :(得分:-1)

$query = ("INSERT INTO ".$_POST['directorycategory']."(
        firstname, lastname, city, state, zipcode, directorycategory, active) VALUES(?, ?, ?, ?, ?, ?, ?)");

http://php.net/manual/en/language.operators.string.php

您可以使用句点将字符串与变量连接以生成1个大字符串。