2015-10-16 23 views
0

當我設法將我的網站表單連接到我的數據庫後,我決定嘗試將我的文件傳輸到我的工作計算機上。開關電腦,並得到兩個新的mysqli_fetch_row錯誤。

起初我只用了一個錯誤:mysqli_fetch_row()預計參數1被mysqli_result,布爾鑑於...

但是現在我得到一個額外的mysqli_fetch_row()錯誤與上述相同,但錯誤是另一條線。

另外我還得到錯誤:未定義的索引:填充,我從來沒有得到過。我的代碼中是否有錯誤?該表單仍然有效,並可以連接到我的數據庫。

<center><form action="fill.php" method="post"> 
     Fill 
     <input type="text" id="fill"" name="fill"> 

    <input type="submit" id ="submit" name="submit" value="Submit here!"> 
</form></center> 

</div> 

<?php 

$val1 = $_POST['fill']; 


$conn = mysqli_connect('localhost', 'root', '')or 
die("Could not connect"); 

mysqli_select_db($conn, 'rfid'); 

$val2 = "SELECT * FROM card_refill WHERE refill = $val1"; 

$result1= $conn->query($val2); 

$row = mysqli_fetch_row($result1); 

$refill1 = $row[2]; 


$value = "SELECT *FROM card_credit ORDER BY id DESC LIMIT 1:"; 

$result = $conn->query($value); 

$row = mysqli_fetch_row($result); 

$refill = $row[2]; 

$money= $refill+$refill1; 

echo $money; 

$sql = "UPDATE card_credit SET value = '$money'"; 

if ($conn->query($sql) === TRUE) { 

    echo "Success"; 
} 
else { 
    echo "Warning: " . $sql . "<br>" . $conn->error; 
} 
mysqli_close($conn); 
?> 

</body> 

</html> 
+1

你已經混合了對象和功能符號。這是在問問題。另外,我今天已經看到了這個錯誤消息。在提問前請稍微查詢一下。 – GolezTrol

+2

可能重複[mysql \ _fetch \ _array()期望參數1是資源(或mysqli \ _result),布爾給定](http://stackoverflow.com/questions/2973202/mysql-fetch-array-expects-parameter -1-待資源或-mysqli的對結果布爾) –

回答

-1

像GolezTrol從他的評論中說。你在混合對象和功能符號。

雖然這可能無法正確工作,您需要它,因爲我沒有所有的信息。我已經給你寫了一些我認爲接近你要找的東西的東西。

<?php 
    // Define the below connections via $username = ""; EXTRA.... 
    // This is best done in a separate file. 

    $conn = new mysqli($servername, $username, $password, $dbname); 

    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $val1 = $_POST['fill']; 
    $result1 = $conn->query("SELECT * FROM card_refill WHERE refill = '$val1' "); 
    $result2 = $conn->query("SELECT * FROM card_credit ORDER BY id DESC LIMIT 1:"); 

    $refill1 = array(); // Pass Results1 Into Array 
    while($row = $result1->fetch_assoc()) { 
     $refill1[] = $row[2]; 
    } 

    $refill = array(); // Pass Results2 Into Array 
    while($row = $result2->fetch_assoc()) { 
     $refill[] = $row[2]; 
    } 

    /* Without an example of what data you are getting from your tables you will have to figure out what data you want from the arrays. 
     $money= $refill+$refill1; 
     echo "DEBUG: $money"; 
    */ 


    // This code will not be functional until your populate the $money value. 
    $sql = "UPDATE card_credit SET value = '$money' "; 

    if ($conn->query($sql) === TRUE) { 
     echo nl2br("Record updated successfully"); // DEBUG 
     print_r(array_values($refill1)); // DEBUG 
     print_r(array_values($refill)); // DEBUG 
     echo nl2br("\n"); // DEBUG 
    } else { // DEBUG 
     echo "Error updating record: " . $conn->error; // DEBUG 
     echo nl2br("\n"); // DEBUG 
    } 

    $conn->close(); 
?> 
0

因爲你用$_POST['fill']不檢查是否它的設置首先你得到錯誤。它只會在表單提交時設置,而不是在表單首次顯示時設置。你需要把所有處理表單輸入代碼:

if (isset($_POST['submit'])) { 
    ... 
} 

順便說一句,你可以在一個單一的查詢整個更新。

UPDATE card_credit AS cc 
CROSS JOIN card_refill AS cr 
CROSS JOIN (SELECT * FROM card_credit ORDER BY id DESC LIMIT 1) AS cc1 
SET cc.value = cr.col2 + cc1.col2 
WHERE cr.refill = '$val1'