2012-06-22 26 views
0

在PHP函數剛過,我想在一個數據庫表中插入一行作爲無法讀取值使用PHP使用PHP函數寫在mysql數據庫,調用函數

function abnc() 
{ 

$link = conn to db; 
$query = "insert into table(a,c ,v) values (1,2,3);" 
$result = mysqli_query($link, $query); 
if(mysqli_rows_affected($link) == 1){ 
close conn; 
return true;} 
else{ 
return false; 
close conn; 
} 

現在,在其他地方,我調用此函數,並試圖讀出我已經插入 值作爲

$done = abnc(); 
if($done) 
{ 
$query = "select * from table where a=1 and c=2 and v=3"; 
$result = mysqli_query($link, $query); 
echo "true"; 
echo mysqli_num_rows($result); 
} 
else 
{ 
echo 'false'; 
} 

輸出我得到的是true0;

我認爲在函數執行時,腳本只是繼續。 我希望它等到函數執行完成。 任何解決方案??

回答

0

該腳本不會繼續。當你調用abnc()函數將被執行並返回一個你存儲在變量$ done中的值。這個值大概是真的,因爲你的輸出是真0。

在abnc()中插入一行。這意味着一行受到影響,並且函數返回true。並關閉數據庫連接,這可能是您以後無法訪問您插入的數據的原因。

+0

但爲什麼不能讀取值,我剛插入?如果我只是去使用phpmyadmin執行相同的查詢,我能夠看到它返回一行 –

+0

@AmitMittal你在abnc()中關閉連接,我沒有看到你再次連接到數據庫? – 2012-06-22 07:47:34

+0

實際上這個函數在另一個文件functions.php中,我已經包含在這個文件中。在這個文件中,我打開了一個到數據庫的連接 –

0

試試這個

$done = abnc(); 
$link = conn to db; 

if ($done) { 
    $query = "select * from table where a=1 and c=2 and v=3"; 
    $result = mysqli_query($link, $query); 
    if (mysqli_num_rows($result) > 0) { 
     do { 
      $resultSet = array(); 
      if (($row = mysqli_store_result($link))) { 
       while ($row = mysqli_fetch_assoc($row)) { 
        $resultSet[] = $row; 
       } 
       $return[] = $resultSet; 
       @mysqli_free_result($row); 
      } 
     } while (@mysqli_next_result($link)); 
     return $return; 
    } 
} else { 
    return false; 
} 
0

你關閉你的函數的數據庫連接嘗試的功能外打開它,在你的腳本結束時關閉。