MySQL中更新的值错误
$salt 2我正在使用登录系统,更新我的salt表时遇到问题。我不是sql方面的专家,但我知道自己的方法 我要更新的查询是:MySQL中更新的值错误,mysql,sql,database,sql-update,row,Mysql,Sql,Database,Sql Update,Row,$salt 2我正在使用登录系统,更新我的salt表时遇到问题。我不是sql方面的专家,但我知道自己的方法 我要更新的查询是: UPDATE hashTable SET `salt1` = 'salt1here' AND `salt2` = 'salt2here' WHERE `userID` = userID userID是一个整数值,所以我不需要引用它 当我更新该表时,salt1被设置为0的值。我正在使用php创建sql查询,如下所示: UPDATE hashTable SET `salt
UPDATE hashTable SET `salt1` = 'salt1here' AND `salt2` = 'salt2here' WHERE `userID` = userID
userID
是一个整数值,所以我不需要引用它
当我更新该表时,salt1
被设置为0
的值。我正在使用php创建sql查询,如下所示:
UPDATE hashTable SET `salt1` = '$salt1' AND `$salt2` = 'salt2here' WHERE `userID` = $userID
UPDATE hashTable SET `salt1` = '9d6db1743e5e0cf1bb0e8cd799c0640231a10ec21e1612a6ed46e8ea16862835' AND `salt2` = '0824b2aac446ccfbd719645f84b13443cbcf59ee4e6dabace8c421ff6a8c6688' WHERE `userID` = 1374770432
旁注:我知道sql注入,我有保护措施
在我的代码中反对这一点。在这种情况下,我不需要这个,因为
脚本正在生成salt值,用户id是一个值
由函数返回。任何我有用户输入的地方
斜线和有防止注射的方法
对我来说,我的sql查询似乎是正确的,我知道我的值是正确的,因为动态创建的查询是这样的:
UPDATE hashTable SET `salt1` = '$salt1' AND `$salt2` = 'salt2here' WHERE `userID` = $userID
UPDATE hashTable SET `salt1` = '9d6db1743e5e0cf1bb0e8cd799c0640231a10ec21e1612a6ed46e8ea16862835' AND `salt2` = '0824b2aac446ccfbd719645f84b13443cbcf59ee4e6dabace8c421ff6a8c6688' WHERE `userID` = 1374770432
我甚至直接将其输入到phpMyAdmin,它显示0行受影响
,但仍然将我的salt1
行更改为0
我有点困惑,因为看起来我做的每件事都是正确的,但显然我不是
UPDATE hashTable
SET `salt1` = '$salt1' AND `$salt2` = 'salt2here'
WHERE `userID` = $userID
…应该是
UPDATE hashTable
SET `salt1` = '$salt1', `$salt2` = 'salt2here'
WHERE `userID` = $userID
当前,您正在
$salt1
和$salt2='salt2here'
之间执行和操作(在本例中,它似乎返回0),并将该操作存储在salt1
中,您的SQL查询是错误的
UPDATE hashTable
SET `salt1` = '$salt1' AND `$salt2` = 'salt2here'
WHERE `userID` = $userID
…应该是
UPDATE hashTable
SET `salt1` = '$salt1', `$salt2` = 'salt2here'
WHERE `userID` = $userID
目前,您正在执行$salt1
和$salt2='salt2here'
之间的和操作(在本例中似乎返回0),并将其存储在salt1
中,非常感谢!我真不敢相信我没听懂@EvanStoddard总是比坐在那里写代码的人更容易发现错误:)它不是设置了吗,…
而不是和
。它似乎仍在使用此查询执行相同的操作。我知道userID
是匹配的,当我只更新一个值时它就工作了,但它不喜欢同时更新两个值。非常感谢!我真不敢相信我没听懂@EvanStoddard总是比坐在那里写代码的人更容易发现错误:)它不是设置了吗,…
而不是和
。它似乎仍在使用此查询执行相同的操作。我知道userID
是匹配的,当我只更新一个值,但它不喜欢同时更新这两个值时,它会工作。请不要使用字符串插值插入数据,而不使用。请重新阅读我的文章。我已经采取了我在代码示例中没有包含的预防措施。如果它不是显而易见的,那么你就是这么做的,我的意思是“代码> MySQL LealReleSeEx字符串正好在你的查询的中间,那么假设它是不安全的就不安全了。如果您错过了其中一个,您的整个应用程序都可能被销毁。这就是为什么与这种危险且容易出错的字符串串联组合方式相比,强烈建议使用参数化查询的原因。当你说你使用“带斜杠”时,我非常担心,因为这对SQL注入保护没有任何作用。在我的示例中,没有必要表明我在使用mysql\u real\u escape\u string
(顺便说一句,应该是mysqli\u real\u escape\u string
)。另外,我已经解释过,我正在采取预防措施,我不需要对这些变量使用转义字符串函数,因为它们是私有的,在私有函数中,而且它们没有被用户输入填充,也没有被用户填充的地方。我只有几个处理用户输入的函数,我可以向您保证我正在保护输入。谢谢,这非常有用!请不要在没有使用字符串插值的情况下插入数据。请重新阅读我的帖子。我已经采取了我在代码示例中没有包含的预防措施。如果它不是显而易见的,那么你就是这么做的,我的意思是“代码> MySQL LealReleSeEx字符串正好在你的查询的中间,那么假设它是不安全的就不安全了。如果您错过了其中一个,您的整个应用程序都可能被销毁。这就是为什么与这种危险且容易出错的字符串串联组合方式相比,强烈建议使用参数化查询的原因。当你说你使用“带斜杠”时,我非常担心,因为这对SQL注入保护没有任何作用。在我的示例中,没有必要表明我在使用mysql\u real\u escape\u string
(顺便说一句,应该是mysqli\u real\u escape\u string
)。另外,我已经解释过,我正在采取预防措施,我不需要对这些变量使用转义字符串函数,因为它们是私有的,在私有函数中,而且它们没有被用户输入填充,也没有被用户填充的地方。我只有几个处理用户输入的函数,我可以向您保证我正在保护输入。谢谢,这非常有用!