(Birden fazla tablo içine insert değerleri) MySQL INSERT Sorgu birden fazla kez çalıştırmak

4 Cevap php

temelde, 3 tablo var; kullanıcılar ve projeler, sonra bir-çok oluşumunu sağlamak için 'users_projects' var. Bir kullanıcı bir proje ekler, ben saklanan proje bilgilerini ve usersprojects tabloda depolanan sonra 'kimliği' ve 'projectid' gerek. Bu onun gerçekten yalındır gibi geliyor ama sanırım sözdizimi ile sorun yaşıyorum!?

Haliyle, benim INSERT sorguları (değerleri 2 farklı tablolar girmeden) olarak bu var:

$projectid = $_POST['projectid'];
    $pname = $_POST['pname'];
    $pdeadline = $_POST['pdeadline'];
    $pdetails = $_POST['pdetails'];

    $userid = $_POST['userid'];

$sql = "INSERT INTO projects (projectid, pname, pdeadline, pdetails) VALUES
   ('{$projectid}','{$pname}','{$pdeadline}','{$pdetails}')";


$sql =  "INSERT INTO users_projects (userid, projectid) VALUES
   ('{$userid}','{$projectid}')";

$result = mysql_query($sql, $connection)
    or die("MySQL Error: ".mysql_error());
header("Location: frontview.php");
exit();

4 Cevap

Sadece her sorgu arasındaki sql çalıştırmak için unuttum. Ekle

 mysql_query($sql, $connection)
    or die("MySQL Error: ".mysql_error());

Her sorgu arasında ince olması gerekiyordu.

b.t.w (1) it always helpful to test with a console open with tail -f on the sql log (under /var/log/mysql/ )
b.t.w.(2) You are having heavy security issues in your code.
b.t.w (3) You might want to consider using PDO/Mysqli and not the old mysql extension. b.t.w (4) It would make your life simpler to use some kind of wrapper (a good class) to approach the DB and not do it directly everywhere in your code.

Evet, ben kontrol ederim iki şey olurdu

1) sorguları yürütülmektedir? Diğer poster mentiond gibi, SQL ayarı arasında SQL sorguları yürütme?

Eğer eklediğiniz değişkenler nasılsa / debug / ekranı yazdırmak 2) Eğer, onlar nüfuslu alıyorsanız? Eğer görüyorsanız şeyler takılı olsun, ancak bazı veriler daha sonra bir şey daha önce patlattığı olabilir ve bu değişkenler boş olurdu boştur.

Ben yanlış anlama olabilir ama başlık koyarak ("Konum: main.php"); size yazısının ortasında?

Sadece bir kez mysql_query() yürütmek için çalışıyor gibi görünüyor. Siz iki sorgu var, bu yüzden bir kez her sorguyu iki kez kullanılması gerekmektedir:

$sql = "INSERT INTO projects (projectid, projectname, projectdeadline, projectdetails) VALUES
   ('{$projectid}','{$projectname}','{$projectdeadline}','{$projectdetails}')";
$result = mysql_query($sql, $connection)
    or die("MySQL Error: ".mysql_error());

$sql =  "INSERT INTO usersprojects (userid, projectid) VALUES
   ('{$userid}','{$projectid}')";
$result = mysql_query($sql, $connection)
    or die("MySQL Error: ".mysql_error());

Alternatif olarak, mysqli_multi_query() kullanabilirsiniz, ancak bu mysqli arabirimi kullanmak için kod önemli bir yeniden yazmak gerekebilir.