我正在运行相同的mysqli插入查询使用精确相同的参数。它大概有三分之一的时间是成功的,我不知道哪里出了问题。使用mysqli插入查询的不稳定结果
<?php
//...
$decrypted_session_key = 'unavailable'; // initialize
$res = openssl_get_privatekey($priv_key, $passphrase);
$result = openssl_private_decrypt($encrypted_session_key, $decrypted_session_key, $res, OPENSSL_PKCS1_OAEP_PADDING);
if ($decrypted_session_key == 'unavailable') {
mysqli_close($link);
echo json_encode(array('result' => 'failed', 'message' => 'failed to decrypt the session key'));
die();
}
if (!$decrypted_session_key) {
echo json_encode(array('result'=>'failed', 'message'=>'decrypted session key has failed'));
die();
}
$updated_at = date("Y-m-d H:i:s");
// save this record to the database
$result = mysqli_query($link, "INSERT INTO Session_Keys (session_id, session_key, iv, updated_at)
VALUES ($session_id, '$decrypted_session_key', '$iv', '$updated_at')");
if (!$result) {
$param_check = $session_id . " " . base64_encode($iv) . " " . base64_encode($decrypted_session_key) . " " . $updated_at;
echo json_encode(array('result'=>'failed', 'message'=>$param_check));
die();
}
// ...
}
每当这个失败,我得到最后一个回声语句返回。我的怀疑是php解密程序失败,但事实并非如此。所有参数都是完美的,包括解密值。是我的插入语句错误的问题?我尝试过引用字段的各种组合,但没有任何一致的结果。
表结构是这样的:
'SESSION_ID' INT(11)
'session_key可以' TINYBLOB
'IV' TINYBLOB
'的updated_at' 日期时间
我不不明白为什么我的结果如此不一致。如果失败了,为什么不每次都失败?如果有效,为什么每次都不行?很困惑。任何帮助表示赞赏。谢谢!
您在列声明中使用了不正确的标识符。把'mysqli_error($ link)'加入'mysqli_query()',你会看到语法错误。还要确保'$ session_id'不是一个被传递的字符串。 – 2015-04-05 18:35:51
我看不到它。你可以说得更详细点吗?谢谢! – Alex 2015-04-05 18:39:34
我看到你删除了'updated_at'前面的引号''''''''''''''''''''''''''''''''这就是我为什么这么说的原因。 – 2015-04-05 18:40:33