解释此问题与@deceze先生指定的完全重复内容有何不同
=================================
所谓的重复文章中提供的解决方案仅使用UTF-8,并且我已在下面指定的代码中使用。
我的问题专门谈到两件事:
1.整理:utf8_general_ci
2.方法:OOPS代替PDO
我在下面给出的代码已经实现了UTF-8,我已经提到它工作正常
我的问题是关于印地语的完美存储我不知道如何在OOPS方法中使用相同的整理来获取它。
=================================
使用Google API,我在数据库中以hindi语言插入了一些信息。 mysql中的列的数据类型为LONGTEXT,Collation为: utf8_general_ci
当我在PHP中插入前端的值时,数据存储如下:
पà¥à¤°à¤¶à¥à¨à¥§
同时,我还通过md5将此印地文数据的加密值保存为: md5($ _ POST ['transliterateTextareaans'])
在节目页面上,我设置了如下头部信息:
<meta charset="UTF-8">
并且准确显示印地文中的数据。
现在问题出现了。
我想再次将此数据转换为md5值并与数据库加密值进行交叉检查,但它们不匹配。 (考虑在hindi或MCQ中存储用户名和密码的情况,其中正确答案以加密形式存储,并在检查候选答案时需要进行比较)。
这是我的代码:
if(md5($_POST['ans']) == $_POST['hids'])
{
//correct
}
else
{
//wrong
}
我已经通过谷歌,发现我应该设置选择查询的排序规则,但我不知道如何做到这一点。这是我的选择代码:
if($ques=$mysqli->prepare("SELECT * FROM mytab WHERE sno=?"))
{
$ques->bind_param('i', intval($_SESSION['qlist']));
if($ques->execute())
{
$res=$ques->get_result();
$row=$res->fetch_assoc();
}
}
代码现已更新如下:
if(!$conn->set_charset("utf8")) // SETS THE CHARACTERSET
echo $conn->error;
if(!$conn)
{
die("Connection failure: ". $conn->connect_error);
}
if($sql=$conn->prepare("INSERT INTO q_bank VALUES (?, ?, ?, ?, ?, ?, ?)"))
$sql->bind_param('sssssss', $p1, $p2, $p3, $p4, $p5, $p6, $p7);
$p1=........... //upto $p5
$p6=md5($_POST['txtbox']);
同样,现在选择代码来获取数据:
if(!$mysqli->set_charset("utf8")) //SETS THE CHARACTERSET FOR FETCHING
echo $mysqli->error;
$ques->bind_param('i', intval($_SESSION['qlist'][$_SESSION['qnum']]));
现在,没有任何数字的数据比较好
其中包含任何数字的数据无法进行比较。
注意:此处的数据是指MCQ中的选项,需要与加密的正确答案进行比较。