2015-06-25 120 views
0

我遇到的問題是下面的PHP代碼只能將數據插入到一個表格中。我想要的是,如果從POST的目錄類別等於例如藍色INSERT到表藍色,但如果它等於黃色插入到黃色,但如果它等於紅色INSERT到表紅色。MySQLi插入如果

我發現處理插入如果存在,但不是多重插入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

首先,首先刪除引用''__POST [firstname]'和所有其他引號,然後在數組名稱本身內部使用引號。即'$ _POST ['firstname']' - 你在引用錯誤的引用。然而,你不需要這些,你已經在綁定和格式正確,他們爲什麼在你的代碼? –

+0

您可以連接的'$彥博值[ 'directorycategory']'到您的查詢字符串'$查詢=( 「INSERT INTO」。$ _ POST [ 'directorycategory'。「(名字,姓氏,城市,ST ... 「);' –

+3

@PLAudet更好地清理那個輸入,但是 – kittykittybangbang

回答

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(); 
?> 
+0

謝謝,您可以將其標記爲此頁面的未來訪問者的答案。 – loremIpsum1771

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

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

可以使用週期來連接與變量的字符串,使1名大的字符串。

+0

請保持格式。 –

+0

@ champlow007由於某種原因,我在使用該查詢時遇到空白頁面。這是我需要在我的代碼中更改的唯一命令嗎?目錄類別的值來自html表單中的選擇框。 –

+0

請問,當你嘗試做一些簡單的像 $查詢它的工作=( 「INSERT INTO藍(名字)VALUES()?」); $ statement-> bind_param('s','Marquise'); – champlow007

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(?, ?, ?, ?, ?, ?, ?)"); }  

等....