【发布时间】:2019-04-11 19:45:53
【问题描述】:
我正在开展一个项目,我们使用数据库向用户发送消息。在这个 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);
}
【问题讨论】:
-
您的代码存在巨大的安全风险!!您很容易受到 sql-injection 的攻击。请阅读此内容并采取必要的步骤来防止它!!!!
-
感谢您的指出,但我并没有太在意,因为它不用于任何商业用途。只是专注于学习更多关于mysqli和php的知识,虽然我绝对可以回去修复它。
-
好吧,当您只是在学习和培训时,它就像用于任何(非)商业用途一样重要。您的目标不应该只是针对这个问题来解决它,而是要学习如何以正确的方式去做。这些知识将在您使用 sql 的所有过程中有所帮助。
-
messages表的定义是什么——是否有任何独特的约束? -
您是 100% 正确的,我很欣赏您的建议。这绝对是我会回来的,我只是被这个特殊的问题困住了。
标签: php database session mysqli