我有一个更新用户数据的表单.它发布到这个页面:
<?php
//Update user table
session_start();
include 'sql_connect_R.inc.php';
$id = mysql_real_escape_string($_POST['userID']);
$password = mysql_real_escape_string($_POST['user_passwrd']);
$salt = time();
$hash = sha1($password . $salt);
mysql_query("UPDATE users SET user_passwrd = '$hash', stamp = '$salt', pending = 'yes'
WHERE userID = '$id'");
mysql_close($con);
?>
Run Code Online (Sandbox Code Playgroud)
(我已经删除了与这个问题无关的事情)
我相信正在发生的事情是当'stamp'字段填充$ salt时,它获得的值与计算$ hash时的值不同.因此,当用户登录并在此处进行检查时:
$qry="SELECT * FROM users WHERE userlogin = '$login' AND user_passwrd = sha1(CONCAT('$password', stamp))";
$result=mysql_query($qry);
$row = mysql_fetch_assoc($result);
$num = mysql_num_rows($result);
Run Code Online (Sandbox Code Playgroud)
当我回显$ num时,它返回值0.我想知道是否有办法确保$ salt的值在$ hash中使用时保持不变,然后当它更新字段'stamp时".任何人都可以帮助我或指出我正确的方向吗?提前致谢.干杯
我试图用mysql从另一个表填充一个表.第一个表是用户,第二个表是技术人员.
用户包含:userID,surname,firstname,loginid,password,accesslevel.
技术人员包含:techID,tech_surname,tech_firstname,tech_loginid,tech_password,tech_accesslevel.
当我添加用户时,如果accesslevel = tech并且users.loginid不等于technicians.tech_loginid,我希望技术人员表填充.
我已经尝试了几件事,结果是没有添加记录,或者每次添加accesslevel = tech的用户中的所有记录,给我几个重复的记录.
我试过这个:
INSERT INTO technicians (techID, tech_surname, tech_firstname, tech_loginid, tech_passwrd, tech_accesslevel)
SELECT firstname, surname, loginid, accesslevel, passwrd, tech_loginid
FROM users, technicians
WHERE accesslevel='tech' AND 'loginid!=tech_loginid'
Run Code Online (Sandbox Code Playgroud)
它不起作用,如果我从WHERE子句中删除AND语句,每次使用accesslevel = tech添加新用户时,它都会推送所有记录.
我究竟做错了什么?我已经搜索了几个小时的答案.
干杯
我发现这个函数用于大写字符串中单词的第一个字母,但当我尝试在PHPMyadmin中的SQL中运行它时,它在第8行给出了语法错误.任何人都可以帮我解决问题所在吗?这是代码:
CREATE FUNCTION CAP_FIRST (input VARCHAR(255))
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
DECLARE len INT;
DECLARE i INT;
SET len = CHAR_LENGTH(input);
SET input = LOWER(input);
SET i = 0;
WHILE (i < len) DO
IF (MID(input,i,1) = ' ' OR i = 0) THEN
IF (i < len) THEN
SET input = CONCAT(
LEFT(input,i),
UPPER(MID(input,i + 1,1)),
RIGHT(input,len - i - 1)
);
END IF;
END IF;
SET i = i + 1;
END WHILE;
RETURN input;
END;
Run Code Online (Sandbox Code Playgroud)
这就是错误:MySQL说:文档#1064 - 你的SQL语法有错误; …