使用mysqli&;正确访问整行以插入数据库;PHP

使用mysqli&;正确访问整行以插入数据库;PHP,php,database,session,mysqli,Php,Database,Session,Mysqli,我正在做一个项目,我们使用数据库向用户发送消息。在这个php文件中,我在数据库中插入了to、from、date和message字段。目标是向某个公司内的所有人发送相同的信息。但是,当我尝试发送它时,消息有时不会发送,当它发送时,它只会向我从数据库获得的组/行中的第一个联系人发送消息。我在网上看到了其他的例子,但到目前为止,我还没有看到其他人有这个确切的问题。如有任何建议,将不胜感激 $sql = 'SELECT drivers.username FROM project.drivers WHER

我正在做一个项目,我们使用数据库向用户发送消息。在这个php文件中,我在数据库中插入了to、from、date和message字段。目标是向某个公司内的所有人发送相同的信息。但是,当我尝试发送它时,消息有时不会发送,当它发送时,它只会向我从数据库获得的组/行中的第一个联系人发送消息。我在网上看到了其他的例子,但到目前为止,我还没有看到其他人有这个确切的问题。如有任何建议,将不胜感激

$sql = 'SELECT drivers.username FROM project.drivers WHERE drivers.sponsor="'.$_SESSION["company"].'"'; //query to get all driver usernames within one company
$result = $conn->query($sql);
//$row = mysqli_fetch_array($result);
while($row = mysqli_fetch_array($result)){ //iterating throughout all the drivers
    $to  = $row["username"]; //username of current driver
    $from = $_SESSION["username"]; //from current company
    $message = $_SESSION["username"] . " updated your point to dollar ratio. Your new point to dollar ratio is " . $_SESSION["pointRatio"] . "."; //message
    $sql2 = "INSERT INTO project.messages(messages.date, messages.to, messages.from, messages.message) VALUES(now(), '".$to."', '".$from."', '".$message."')"; //inserting message into database
    $conn->query($sql2); //query for database
    $to  = $_SESSION["username"]; //this is the same format but sending the message to the company itself
    $message = $_SESSION["username"] . " updated your point to dollar ratio. Your new point to dollar ratio is " . $_SESSION["pointRatio"] . ".";
    $sql2 = "INSERT INTO project.messages(messages.date, messages.to, messages.from, messages.message) VALUES(now(), '".$to."', '".$from."', '".$message."')";
    $conn->query($sql2);
}

若您添加var_dump并检查数据库中的记录—是否正确?你真的了解所有的行吗

$sql = 'SELECT drivers.username FROM project.drivers WHERE drivers.sponsor="'.$_SESSION["company"].'"'; //query to get all driver usernames within one company
$result = $conn->query($sql);
//$row = mysqli_fetch_array($result);
while($row = mysqli_fetch_array($result)){ //iterating throughout all the drivers
    var_dump($row);
}

您的代码存在巨大的安全风险!!您易受sql注入攻击。请仔细阅读,并采取必要的措施来预防!!!!谢谢你指出这一点,但我并不太关心它,因为它不是用于任何商业用途。我只是专注于学习更多关于mysqli和php的知识,尽管我肯定可以回去修复它。当你只是学习和培训的时候,它就和任何(非)商业用途一样重要。你的目标不应该只是解决这个问题,而应该学会如何用正确的方式去做。这些知识将对您使用sql的所有过程都很有帮助。
messages
表的定义是什么?是否有任何独特的限制?您完全正确,我感谢您的建议。这肯定是我会回来讨论的问题,我只是被困在这个特殊的问题上。在mysql workbench中查看它会得到所有的行,使用var dump也会得到所有的行。这正是困扰我的一部分。好吧,如果你有所有的结果,试试下一件事——在显示sql插入文本的同时在里面——都正确吗?仍然正确。如果调用行中的每个值,则sql插入的文本是正确的。这就像我在代码的其他部分中所做的插入一样。这可能和查询调用有关吗?所以在project.messages中,新记录的数量和$row的数量相同吗?如果数字匹配-您的问题不在代码的另一部分吗?