2017-06-03 50 views
0

獲取數據我有一個問題:PHP不是從MySQL

我的代碼,這是一個:

$id=$_SESSION["id"]; 
$query="select id_period from periods where id_group=$id and end=NULL"; 
$result=mysqli_query($conn,$query); 

if(mysqli_num_rows($result)==0){ 
$insert=mysqli_query($conn,"insert into periods(id_group) values($id)"); 
} 

while($row=mysqli_fetch_row($result)){ 
    $period=$row['id_period']; 
} 

$query="insert into times(id_period,id_group) values($period,$id)"; 
echo $query; 
$insert=mysqli_query($conn,$query); 

如果存在「期間」與現場「端」 = NULL此代碼應搜索。如果不是,則插入一個新的。這工作正常。但是,下一部分不起作用。插入'times'查詢需要由var $ period給出的id_period,但WHILE永遠不會運行。

有什麼想法?謝謝。

+0

**警告**:使用'mysqli'時,您應該使用[參數化查詢](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和['bind_param' ](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢。 **不要**使用字符串插值或連接來完成此操作,因爲您創建了嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 **不要**將'$ _POST','$ _GET'或**任何**用戶數據直接放入查詢中,如果有人試圖利用您的錯誤,這可能會非常有害。 – tadman

+0

[與NULL值比較]可能的重複(https://stackoverflow.com/questions/2393076/comparing-with-null-values) – CBroe

回答

0

我在下面,而代碼

while($row=mysqli_fetch_row($result)) { 
    $period=$row['id_period']; 
} 

在這種用於提取從結果數據集必須使用mysqli_fetch_row按照PHP文檔http://php.net/manual/en/mysqli-result.fetch-row.php mysqli_fetch_row發現問題 - 獲取結果一行作爲枚舉數組。

如果您有興趣使用名稱作爲索引獲取數據,請使用 http://php.net/manual/en/mysqli-result.fetch-assoc.php it mysqli_fetch_assoc - 將結果行作爲關聯數組提取。

希望它可以幫助你。

+0

工作!我已經嘗試使用fetch_assoc,但當時我確實遇到了另一個問題,所以我放棄了這一點。萬分感謝! –

+0

@CrateOFS歡迎您。 – absawant25

0

你缺少一個值,有三個字段被插入,只有兩個值給出。

$query="insert into times(id_period,id_user,id_group) values($period,$id)"; 

您還應該查看準備好的語句和綁定。

+0

對不起,真正的查詢有更多的字段。我忘了抹掉那個。但問題仍然存在。 –