PHP MySQLi传递选择或查询的文本值

问题描述 投票:0回答:2

我有一个USERS表,用于存储用户ID(users.uid)和全名(users.full_name)。然后我有一个On Call计划表,其中列出了下一年的所有周,以及每个待命班次(例如白天和夜晚)的名称字段和用户ID(uid)字段。随叫随到

on_call_week,us_night_uid,us_night_full_nam,us_day_uid,us_day_full_name

17-12-25,53,Jane Doe,94,Jill Todd17-12-18,2342,John Smith,24岁,Bob Orr

然后,我有一个表格,列出所有待命周开始日期(旁边有复选框)和一个提交按钮,其中有一个页面,列出一个表格,其中每个选定的通话周都有下拉电话插槽(白天)晚)

当我只传递下拉列表框的值时,我试图弄清楚他如何更新UID字段和full_name字段(值为UID,文本为full_names)。

我应该(以某种方式)尝试传递选择下拉菜单的文本吗?如果不是,我应该在FOR循环中创建两个新查询,以获取每个UID的日夜插槽full_names。或者,我是否应该尝试执行某些操作,例如将整个用户表查询到一个数组中,然后在每个FOR循环传递中循环遍历该数组两次以获取两个UID插槽的匹配名称?

有一点我不明白MySQLi,我找不到答案就是你多次循环mysqli_fetch_array,查询是否重新制作,或者你可以多次遍历$ result而不重新查询db(while($ row = mysqli_fetch_array($ result)))?我仍然是PHP的新手,老实说甚至不确定如何使用结果集的临时副本(?)来查看PHP查询数据库的次数。

我正在关注这个old guide,了解如何构建一个表单,根据检查的记录一次更新多个记录。

谢谢你的帮助。

<?php
$dbname = "on_call";
include '../shared_recources/db_connect.php'; 

if(isset($_POST["submit"]) && trim($_POST["submit"]) != "") 
{
    $checked_weeks = count($_POST["selected_on_call_weeks"]);

    for($i=0; $i<$checked_weeks; $i++) 
    {
        $us_day_uid = $_POST["us_day_uid"][$i];
        $us_night_uid = ($_POST["us_night_uid"][$i];

        mysqli_query($con, "UPDATE on_call.on_call_schedule
                            SET us_day_full_name = '" . $_POST["us_day_full_name"][$i] . "',
                                us_day_uid = '?????????',                           
                                us_night_full_name = '"  . $_POST["us_night_full_name"][$i] . "',
                                us_night_uid = '"  '???????????????' . "',
                                WHERE id = '"  . $_POST["selected_on_call_weeks"][$i] . "' 

                            ");                 
    }
}
?>
php mysqli
2个回答
0
投票

码:

while($row = mysqli_fetch_array($result))

只执行一次查询,然后遍历可以存储在PHP机器RAM或数据库服务器上的结果 - 你无法控制它存储的位置,它取决于数据库'php driver'。


你的其他问题很难理解。你必须等待别人给你完整的答案。如果在问题中添加SQL模式(表模式),那么理解起来要容易得多。


0
投票

每次运行[mysqli_query]时,都会在DB上执行查询。

为了更好地了解正在发生的事情,我建议A)注释掉[mysqli_query],这样它就不会访问数据库然后B)在你的[查询]的[for]中构建一个字符串变量。然后,您可以在[for]循环后将完成的查询回显到屏幕。这将让您准确了解您将发送给数据库的内容。

在您查看行为之后,按照您的预期,您可以取消注释[mysqli_query]并根据需要进行调整 - 或者 - 您可以在[for]循环之外运行[mysqli_query](您回显变量) 。

以下是来自PHP.net的更多细节:http://php.net/manual/en/mysqli.query.php

© www.soinside.com 2019 - 2024. All rights reserved.