gpt4 book ai didi

php - PHP 中的 Mysql 运行一个查询,然后在第二个查询上失败,

转载 作者:行者123 更新时间:2023-11-29 19:26:26 25 4
gpt4 key购买 nike

好吧,我很抱歉 - 过去几天我一直在研究这个问题,但我陷入了困境......所以我寻求建议或新的眼光来帮助我......

这里的代码要么已经工作,要么已经在 phpMyAdmin 的 sql 部分进行了测试...一些背景,我有一个包含两个表、用户和角色的数据库。我试图将用户插入到用户数据库中(99%的时间都有效...),然后在创建用户之后,只要之前没有错误,然后在角色表中创建一行并设置基于用户的角色...看起来很简单,但即使查询在 phpmyadmin 中工作并且不会引起问题,php 代码每次运行都会失败...用户被创建...并且无法访问其余部分除非我手动将它们添加到角色表中...我确信您可以理解为什么我希望在用户创建登录名时进行此操作...

@ $query = "INSERT INTO users
(
Username , Password , pwsecret , emailAddress , Fname , Lname , Joined_Date
)
VALUES
(
'$uName' , '$encoded', '$salt' , '$email' , '$firstName' , '$lastName', CURRENT_TIMESTAMP
)";

ini_set('display_errors', 'On');

if (!mysqli_query($db,$query)){
$error_message = "There was a problem when attempting to add you as a user, please try again and if the issue persists please contact the webadmin.";
//clear vars for reuse::
$_POST = array(); //should stop data from persisting.
$uName = "";
$pw1 = "";
$pw2 = "";
$encoded = "";
$email = "";
$firstName = "";
$lastName = "";
include("partial/user/_register.php");
exit(); //jic something goes wrong we do not want to have the script resume.
}else{
//the following should add a newly generated user to the roles table.
$select="(SELECT userID FROM users WHERE Username = $uName)"; //sub query to return a user ID
$insert="INSERT INTO roles (userID , isAdmin , isMod , isFormerStaff , isUser , isBanned) VALUES ((SELECT userID FROM users WHERE Username = $uName;) , 0 , 0 , 0 , 1 , 0);"; //insert query to add user to roles table
//I tested this code in mysql phpmyAdmin and it worked with out error...
if (!mysqli_query($db,$insert)){
echo "User role not created - please add user manually.";
}

在第二个查询中,userID 字段中有一个选择语句,这是因为我需要它来获取最后一个注册者的用户 ID,还要记住,这是在生成用户后立即运行的,并假设 table 是干净的。

如果你们能提供任何帮助或问题的来源,我们将不胜感激......我知道这可能是我错过的东西......但我看不到它......

杰西·芬德

最佳答案

杰西芬德,

我看到你写了select id语句,但它只是一个简单的字符串格式的查询,你并没有通过添加mysql_Query($select)使其成为查询格式

代码在 mysql 中可以正常工作,因为不需要使用 mysql_query,因为它的作用就像一个查询,但是在 PHP 中,您需要将字符串转换为查询,因此它的作用就像一个查询..

试试这个:

$select="(SELECT userID FROM users WHERE Username = $uName)";
$lasid = mysqli_query($db,$select);

//sub query to return a user ID
$insert="INSERT INTO roles (userID , isAdmin , isMod , isFormerStaff , isUser , isBanned) VALUES ($lasid , 0 , 0 , 0 , 1 , 0);";
mysqli_query($db,$insert);
if (!mysqli_query($db,$insert)){
echo "User role not created - please add user manually.";
}

关于php - PHP 中的 Mysql 运行一个查询,然后在第二个查询上失败,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42098492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com