切换计算机并得到两个新的mysqli_fetch_row错误


Switched computers and get two new mysqli_fetch_row errors.

在我成功地将我的网站表单连接到我的数据库之后,我决定尝试将我的文件传输到我的工作计算机上。

最初我只有一个错误: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>

你得到这个错误,因为你使用$_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'

就像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();
?>