2017-12-07 12 views
0

1つのクエリを2つのテーブルに挿入しようとしていますが、動作していません。 私はすべての_POSTデータを "ツアー"テーブルと画像ギャラリーのイントロ "poze_articol"テーブルに保存します。poze_articolのIDはtoursのIDですが、私はPHPで新しいので、何か助けていただきありがとうございます!INSERT INTO 2テーブルクエリ

PHPコード:

<?php 
$dbhost = ''; 
$dbuser = ''; 
$dbpass = ''; 
$myDBname = ''; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass, $myDBname); 
$db_selected = mysql_select_db('antonytravel', $conn); 
if (!$db_selected) { 
    die ('Can\'t use antonytravel : ' . mysql_error()); 
} 
if(isset($_POST['addtour'])) 
{ 
if (!isset($_FILES['poza_caseta']['tmp_name'])) { 
    echo ""; 
    }else{ 
    $file=$_FILES['poza_caseta']['tmp_name']; 
    $image= addslashes(file_get_contents($_FILES['poza_caseta']['tmp_name'])); 
    $image_name= addslashes($_FILES['poza_caseta']['name']); 

      move_uploaded_file($_FILES["poza_caseta"]["tmp_name"],"../../../../img/traseu_thmb/" . $_FILES["poza_caseta"]["name"]); 

      $poza_caseta="img/traseu_thmb/" . $_FILES["poza_caseta"]["name"]; 

    if (!isset($_FILES['poza_header']['tmp_name'])) { 
    echo ""; 
    }else{ 
    $files=$_FILES['poza_header']['tmp_name']; 
    $images= addslashes(file_get_contents($_FILES['poza_header']['tmp_name'])); 
    $images_name= addslashes($_FILES['poza_header']['name']); 

      move_uploaded_file($_FILES["poza_header"]["tmp_name"],"../../../../img/poze_header/" . $_FILES["poza_header"]["name"]); 

      $poza_header="img/poze_header/" . $_FILES["poza_header"]["name"]; 

      ########### Poze Upload ######### 
error_reporting(0); 
define ("MAX_SIZE","9000"); 
function getExtension($str) 
{ 
     $i = strrpos($str,"."); 
     if (!$i) { return ""; } 
     $l = strlen($str) - $i; 
     $ext = substr($str,$i+1,$l); 
     return $ext; 
} 
$valid_formats = array("jpg", "png", "bmp","jpeg"); 
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
{ 

    $uploaddir = "../../../../img/gallery/"; //image upload directory 
    foreach ($_FILES['photos']['name'] as $name => $value) 
    { 

     $filename = stripslashes($_FILES['photos']['name'][$name]); 
     $size=filesize($_FILES['photos']['tmp_name'][$name]); 
     //get the extension of the file in a lower case format 
      $ext = getExtension($filename); 
      $ext = strtolower($ext); 

     if(in_array($ext,$valid_formats)) 
     { 
      if ($size < (MAX_SIZE*1024)) 
      { 
      $image_name=time().$filename; 

      $newname=$uploaddir.$image_name; 

      if (move_uploaded_file($_FILES['photos']['tmp_name'][$name], $newname)) 
      { 

$sqlz = "INSERT INTO tours (titlu,durata,descriere,pret,ribbon,poza,titlu_slider,desc_slider,poza_slider,descriere_box,titlu_box1,desc_box1,titlu_box2,desc_box2,titlu_box3,desc_box3,titlu_box4,desc_box4,poze_articol) VALUES ('".$_POST["oras_caseta"]."','".$_POST["durata_caseta"]."','".$_POST["descriere_caseta"]."','".$_POST["pret_caseta"]."','".$_POST["icon_caseta"]."','$poza_caseta','".$_POST["titlu_slider"]."','".$_POST["descriere_slider"]."','$poza_header','".$_POST["descriere_overview"]."','".$_POST["titlu_box1"]."','".$_POST["desc_box1"]."','".$_POST["titlu_box2"]."','".$_POST["desc_box2"]."','".$_POST["titlu_box3"]."','".$_POST["desc_box3"]."','".$_POST["titlu_box4"]."','".$_POST["desc_box4"]."')"; 

$sqlz .= "INSERT INTO poze_articol (poza_slider,pid) VALUES ('img/gallery/$image_name','1')"; 
$retval = mysql_query($sqlz, $conn); 

echo '<div class="alert alert-success" role="alert"> 
    <strong>Bravo!</strong> Ai adaugat cu succes un traseu pe site. 
</div>'; 
} 
} 
    } 
    } 
    } 
    } 
     } 
} 
?> 
+0

コードを見て、クエリ変数$ sqlzを何回実行するかを確認してください。 –

+3

うわー、SQLインジェクション、ローカルファイルのインクルード、廃止予定のAPI ....コードをそのまま残す方が安全かもしれません。 – symcbean

答えて

0

あなた$sqlz変数で行ったようにあなたは、あなたのSQL命令を連結することはできません。

一度に1つずつSQL挿入クエリを実行する必要があります。

最初のINSERT into toursの直後にmysql_query($sqlz, $conn)を実行する必要があります。その後、$ sqlzを再度INSERT INTO poze_articolと再利用してからもう一度mysql_query($sqlz, $conn)を実行する必要があります。

$sqlz = "INSERT INTO tours (titlu,durata,descriere,pret,ribbon,poza,titlu_slider,desc_slider,poza_slider,descriere_box,titlu_box1,desc_box1,titlu_box2,desc_box2,titlu_box3,desc_box3,titlu_box4,desc_box4,poze_articol) VALUES ('".$_POST["oras_caseta"]."','".$_POST["durata_caseta"]."','".$_POST["descriere_caseta"]."','".$_POST["pret_caseta"]."','".$_POST["icon_caseta"]."','$poza_caseta','".$_POST["titlu_slider"]."','".$_POST["descriere_slider"]."','$poza_header','".$_POST["descriere_overview"]."','".$_POST["titlu_box1"]."','".$_POST["desc_box1"]."','".$_POST["titlu_box2"]."','".$_POST["desc_box2"]."','".$_POST["titlu_box3"]."','".$_POST["desc_box3"]."','".$_POST["titlu_box4"]."','".$_POST["desc_box4"]."')"; 

mysql_query($sqlz, $conn); 

$sqlz = "INSERT INTO poze_articol (poza_slider,pid) VALUES ('img/gallery/$image_name','1')"; 

mysql_query($sqlz, $conn); 
+0

あなたはどのように私を見せてくれますか? – Alex

+0

"SQL命令を連結することはできません" - 可能であれば、それらを呼び出すとmysqli_multi_query() - http://php.net/manual/en/mysqli.multi-query.php – symcbean

+2

@symcbean彼はmysqlを使用しています、mysqliではありません –