2016-04-28 20 views
0

我想在我的數據庫中的表中插入值。第一個參數是一個非null變量,接下來的兩個是我想要傳入的兩列。我的邏輯在這裏有什麼問題。如何從mysqli_fetch_array傳遞我的查詢值?

$query = "SELECT cnum, cname FROM course WHERE specialization = '0'"; 
$result = mysqli_query($conn,$query); 

if (!$result) die ("Database access failed: " . $conn->error); 

$rows = $result->num_rows;  
for ($j =0; $j<$rows;++$j) { 

    $row = mysqli_fetch_array($result); 
    $query = "INSERT INTO student_schedule VALUES ('$studentID', '$row[0]', '$row[1]', '0')"; 

    $result = $conn->query($query); 
    if (!$result) die ("Database access failed: " . $conn->error); 

} 
+0

這不行嗎?拋出任何錯誤? – choz

+0

是的,我得到預期的$結果是參數,但布爾,而不是傳遞給mysqli_fetch_array –

回答

1

您的解決方案

<?php 
$query = "SELECT cnum, cname FROM course WHERE specialization = '0'"; 
$result = mysqli_query($conn,$query); 
if (!$result) die ("Database access failed: " . $conn->error); 

while ($row = mysqli_fetch_array($result)) { 
    $insertQuery = "INSERT INTO student_schedule VALUES ('" . $conn->real_escape_string($studentID) . "', '" . $conn->real_escape_string($row[0]) . "', '" . $conn->real_escape_string($row[1]) . "', '0')"); 
    $insert = $conn->query($insertQuery); 
    if (!$result) die ("Database access failed: " . $conn->error); 
} 
?> 

此外,作爲一般規則,我建議你不要使用面向對象的代碼庫MySQLi混合程序代碼。最後,我還建議您移除輸出$conn->error的錯誤,而不是捕獲錯誤並改爲輸出自定義錯誤消息。這減少了注射攻擊。

+0

後,更改爲您的解決方案我得到注意:未定義偏移量:0在C:\ xampp \ htdocs \ journalism.php 140行 注意:Undefined第140行的C:\ xampp \ htdocs \ journalism.php中的偏移量爲1 注意:使用未定義的常量結果 - 假設'result'在第142行的C:\ xampp \ htdocs \ journalism.php中 –

+0

@Murph_Fish更改' $ insert = $ conn-> query($ insertQuery);'to'$ result = $ conn-> query($ insertQuery);''當你使用@LFlare的解決方案時。在你的if(!result)die(「Database access failed:」。$ conn-> error)中也缺少$; – VipindasKS

+0

@VipindasKS修復後我得到未定義的偏移量0和未定義的偏移量1指向$ insertquery的任何想法? –

0

您的代碼容易受到SQL Injections的影響,這可能是其無法正常工作的原因。

你應該包括它變成一個SQL查詢之前逃跑的數據:

for ($j =0; $j<$rows;++$j) { 

    $row = mysqli_fetch_array($result); 
    $query = $conn->prepare("INSERT INTO student_schedule VALUES (?, ?, ?, '0')"; 
    $query->bind_param('iss', $studentID, $row[0], $row[1]); 
    $result = $query->execute(); 
    if (!$result) die ("Database access failed: " . $conn->error); 

} 

您可以找到有關PHP manualbind_param()功能的更多信息。

+0

插入此後我得到致命錯誤:不能通過引用參考5在C:\ .........線145 –

+0

@Murph_Fish是的,有一個問題。答案現在被編輯,你可以再試一次。 –

相關問題