试图用 mysql 查询填充 PHP 变量。然后使用该查询中的数据更新另一个 table

Trying to fill a PHP variable with a mysql query. Then updating another table with the data from that query

首先post,开始了。

所以这是我到目前为止的代码:

include('Connection/connect-test.php');
$selected1 = $_POST['selected'];
$sqlget = "SELECT paymentid FROM highschoolpayment WHERE hsgameid = '$selected1'";
$sqldata = mysqli_query($dbcon, $sqlget); 
$sqlupdate = "UPDATE highschool SET paymentid = '$sqldata' WHERE hsgameid = '$selected1'";
mysqli_query($dbcon, $sqlupdate);

我想要做的是从 'highschoolpayment' table 中获取 'paymentid' 并将该值存储到 $sqldata 变量中(第 4 行)。然后我想使用我从第 4 行获得的值以及从 POST 提交(第 6 行)中提取的值来更新 'highschool' table 中的值。我知道前 3 行是按预期执行的。当事情变得不确定时,正是在这些线路之后。当其他一切正常时,我没有像往常一样看到表格(重新出现)。对我来说,这表明 PHP 已成功 运行。我转到 'highschool' table 但我没有看到我期望看到的值 (paymentid)。我个人想不出这行不通的一个原因,但是,我在 PHP 或 MySQL 方面没有那么丰富的经验,所以我愿意接受任何我能得到的帮助。

我希望这在没有看到 table 的结构的情况下是有意义的,但如果我需要 post 那些,请告诉我。我花了几个小时尝试解决此问题,但没有任何进展。

谢谢!

这样试试,

include('Connection/connect-test.php');
$selected1 = $_POST['selected'];
$sqlupdate = "UPDATE highschool SET paymentid = (select paymentid FROM highschoolpayment WHERE hsgameid = '$selected1') where hsgameid = '$selected1'";   
mysqli_query($dbcon, $sqlupdate);

假设此查询 returns 只有一行:

$sqldata = mysqli_query($dbcon, $sqlget);
$row = mysqli_fetch_array($sqldata);
$paymentid = $row['paymentid']; // then use $paymentid in the next query
$sqlupdate = "UPDATE highschool SET paymentid = '$paymentid' 
              WHERE hsgameid = '$selected1'";
if(mysqli_query($dbcon, $sqlupdate)){
   echo 'Update successfull';
} else {
   echo 'Update query is wrong. The query generated was <br />'.$sqlupdate;
}

您需要执行 fetch_assoc(),同时您应该参数化您的查询以使其更安全,这是未来的良好实践。你的代码应该是这样的

$selected1 = $_POST['selected'];
$connect = mysqli_connect("localhost","user","pass","database");//i connect this way to my database

//the first statement that will get your paymentid
$stmt = $connect->prepare("SELECT paymentid FROM highschoolpayment WHERE hsgameid = ?")
mysqli_stmt_bind_param($stmt, 's', $selected1);//'s' is for string, 'i' for int, google rest
$stmt->execute();   
$result = $stmt->get_result();

while($row = $result->fetch_assoc()){//it fetches each id 

    //the second statement that will use the payment id and update the database
    $stmt2 = $connect->prepare("UPDATE highschool SET paymentid = ? WHERE hsgameid = ? ;")
    mysqli_stmt_bind_param($stmt2, 'ss',$row['paymentid'], $selected1 );//'s' is for string, 'i' for int, google rest
    $stmt2->execute();
    $stmt2->close();

}

$stmt->close();

我只是把它快速地放在一起,所以如果有人看到有什么不对的地方,请毫不犹豫地对其进行编辑或在完全错误的情况下将其标记下来,我宁愿这样做。