2016-01-26 30 views
0

之後進行查詢我是PHPMySQL的新手,遇到以下問題。

我試圖插入一個新的用戶到數據庫中。在用戶插入後,我必須獲取此用戶的ID並使用此ID將一些數據插入到數據庫中的另一個表中。

我試圖得到提到的ID,但是當我做mysqli_fetch_row(result_parameter)時,我得到一個錯誤「期望參數1是資源,布爾給定」。任何想法如何解決這個問題?

我可以在插入函數mysqli_commit($ con)之後執行另一個查詢嗎?或者有更好的方法來製作它?

if(isset($_POST['regjistrohu'])) 
{ 
    $emri = $_POST['emri']; 
    $mbiemri = $_POST['mbiemri']; 
    $email = $_POST['email']; 
    $password = $_POST['password']; 
    $gjinia = $_POST['gjinia']; 
    $mosha = $_POST['mosha']; 
    $adresa = $_POST['adresa']; 
    $numer = $_POST['numer']; 
    $data = date("Y-m-d"); 
    $sql = "INSERT INTO user (U_Email,U_Password,Type) VALUES ('$email','$password',3) ; INSERT INTO pacient (P_Emer,P_Mbiemer,P_Email,P_Password,P_Gjinia,P_Mosha,P_Adresa,P_Cel) VALUES ('$emri','$mbiemri','$email','$password','$gjinia','$mosha','$adresa','$numer')"; 
    $res = mysqli_multi_query($conn,$sql); 
    if($res == true) 
    { 
     echo "pacienti u shtua"; 
    } 
    else 
    { 
     echo "pacienti nuk u shtua" .mysql_error(); 
    } 
} 
$sel = "SELECT P_Id FROM pacient WHERE P_Email = '$email'"; 
$zgjidh = mysqli_query($conn,$sel); 
while ($row = mysqli_fetch_row($zgjidh)) 
{ 
    echo $row[0]; 
} 
+3

這個非常頻繁出現在這個論壇中 - http://stackoverflow.com/questions/2973202/mysql-fetch-array-expects-parameter-1-to-be-resource-or-mysqli-result-boole?rq=1沒有共享代碼,雖然你不會收到正確的響應! – RamRaider

+0

@RamRaider你介意看看代碼bro –

+0

注入你的SQL的原始不可信輸入加上'mysqli_multi_query()'讓你的應用成爲黑客聚會。它就像一個SQL控制檯! –

回答

0

使用此代碼:

$sel = 'SELECT P_Id FROM pacient WHERE P_Email = "'.$email.'" '; 
$zgjidh = mysqli_query($conn,$sel); 
while ($row = mysqli_fetch_assoc($zgjidh)){ 
    $id= $row['P_Id'] 
} 
echo $id; 

這將返回其ID屬於$電子郵件(插入的電子郵件地址)的ID!

+0

這個想法是,這個每個用戶一旦註冊就被插入到表用戶中,並進入pacaient。現在我想選擇新的pacient id,並使用此id將有關此的其他數據插入另一個表名稱爲list。 P_Id是這個其他表的外鍵。問題是我無法獲得ID 我想要選擇的ID是表pacient中的ID P_Id whch與表用戶中的ID不同U_Id –

+0

上述回聲字段在sql – RamRaider

+0

中未選中不明白!你想要在用戶名稱爲pacaient的表中插入的ID嗎? –

0

此代碼易受sql注入影響,所以請考慮在mysqli中使用預準備語句!這一切看起來像它應該工作,一點點重新安排略有不同的語法與選擇(這需要$email作爲參數,所以應該是IF/END IF控制

<?php 
    if(isset($_POST['regjistrohu'])){ 

     $emri = $_POST['emri']; 
     $mbiemri = $_POST['mbiemri']; 
     $email = $_POST['email']; 
     $password = $_POST['password']; 
     $gjinia = $_POST['gjinia']; 
     $mosha = $_POST['mosha']; 
     $adresa = $_POST['adresa']; 
     $numer = $_POST['numer']; 
     $data = date("Y-m-d"); 


     $sql = "INSERT INTO `user` (`U_Email`, `U_Password`, `Type`) VALUES ('$email', '$password', 3); 

       INSERT INTO `pacient` (`P_Emer`, `P_Mbiemer`, `P_Email`, `P_Password`, `P_Gjinia`, `P_Mosha`, `P_Adresa`, `P_Cel`) 
        VALUES 
       ('$emri', '$mbiemri', '$email', '$password', '$gjinia', '$mosha', '$adresa', '$numer');"; 

     $res = mysqli_multi_query($conn, $sql); 

     if($res == true) { 
      echo "pacienti u shtua"; 


      $sql = "SELECT `P_Id` FROM `pacient` WHERE `P_Email` = '$email';"; 
      $res = mysqli_query($conn, $sql); 

      while ($row = mysqli_fetch_object($res)) { 
       echo $row->P_Id; 
      } 

     } else { 
      echo "pacienti nuk u shtua" .mysql_error(); 
     } 

     mysqli_close($conn); 
    } 
?> 
+0

還是我得到一個錯誤 mysqli_fetch_object()預計參數1被mysqli_result,因爲電子郵件是唯一給出 –

+0

布爾是那裏,如果我設置電子郵件作爲任何區別第三表的外鍵? –

+0

數據庫連接對象在哪裏定義?你能拿出那段代碼嗎? – RamRaider