Php MySQL查询语法有时无效
尝试加密一个社会保险号码时,查询偶尔会起作用,但每5到10次就会抛出一个错误Php MySQL查询语法有时无效,php,mysql,encryption,mysqli,Php,Mysql,Encryption,Mysqli,尝试加密一个社会保险号码时,查询偶尔会起作用,但每5到10次就会抛出一个错误 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '�9~���d�~/C�yK�~�� _', ' 50', '62' )' at line 1 SSN: _mosPEdaXEsB7zJCQe5ayma
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '�9~���d�~/C�yK�~�� _', ' 50', '62' )' at line 1
SSN: _mosPEdaXEsB7zJCQe5aymaCmkcSl9bnPL5ClLXcz2QA=_
IV: _ �6�k���_O�'�9~���d�~/C�yK�~�� _
这是代码
//Encryption/Decryption key
$Key = hash("SHA256", $Lname, true);
//Encryption Algorithm
$cipher_alg = MCRYPT_RIJNDAEL_256;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg, MCRYPT_MODE_ECB), MCRYPT_RAND);
$ESSN = mcrypt_encrypt($cipher_alg, $Key, $SSN, MCRYPT_MODE_CBC, $iv);
$ESSN = '_' . base64_encode($ESSN) . '_';
$iv = '_' . $iv . '_';
if(!mysqli_query($connection, "CALL Update_ClientSSN('$ESSN','$iv', ' $AppID', '" . $_SESSION['ID'] . "' );")){
$Save .= " Error saving Client SSN";
echo $connection->error;
echo $ESSN . ' IV: ' . $iv;
}
最初我只是将IV和密文连接起来,然后爆炸,但仍然会出现错误,所以下划线只是我在试验。我被难住了您应该尝试对$iv变量进行base64_编码,就像您对$ESSN所做的那样,或者至少将其转换为十六进制格式,然后再将其存储到数据库中,看看是否有帮助。原因是$iv可能包含一个非法字符,例如“(单引号)您的问题是,生成的值
$iv
包含一个单引号(中间的某个地方:O�'�9) ,这将导致insert语句无效。使用预先准备好的语句(PDO或)或编码$iv
应该可以解决您的问题编码iv完成了这个技巧,在我连接它们之前,我是在编码之后完成的,谢谢