我有一个包含3列的MySQL数据库(id,question,answer)。我使用一个代码将get方法插入到数据库中并进行了解密(清理),但我在mysqli中搜索一个方法。当我想从数据库中获得问题匹配的答案时,我会得到空白页面。 这是我用于插入的代码(它有效,但我需要mysqli):
require 'db.php';
function array_sanitize(&$item)
{
$item = htmlentities(strip_tags(mysql_real_escape_string($item)));
}
function InsertData($register_data)
{
array_walk($register_data, 'array_sanitize');
$fields = '`' . implode('`, `', array_keys($register_data)) . '`';
$data = '\'' . implode('\', \'', $register_data) . '\'';
mysql_query("INSERT INTO `db_question` ($fields) VALUES ($data)");
}
if ($_GET['code'] == "somecode")
{
$data = array(
'question' => $_GET['q']),
'answer' => $_GET['a']
);
InsertData($data);
exit();
}
我更大的问题是,当我通过匹配问题来阅读答案时:
require 'db.php';
function sanitize($data)
{
return htmlentities(strip_tags(mysql_real_escape_string($data)));
}
if ($_GET['code'] == "somecode")
{
$question = sanitize($_GET['q']);
$result = mysql_query("SELECT `answer` FROM `db_question` WHERE `question` = '$question'");
echo "
<table id=\"box-table-b\">
<thead>
<tr>
<th scope=\"col\">Answer</th>
</tr>
</thead>";
if($row = mysql_fetch_array($result))
{
echo "<tbody>";
echo "<tr>";
echo "<td>" . $row['answer'] . "</td>";
echo "</tr>";
echo "</tbody>";
}
echo "</table>";
}
我认为问题与get方法不一样,因为数据库中的问题和答案也包含如下字母:ă,î,ş,ţ,â 使用get方法,空格将被替换为%20,当我尝试通过id获得答案时,我得到“?”而不是那些字母。 如果有人可以帮助我。
即使我更新了我的代码:
$question = sanitize($_GET['q']);
$result = mysql_query("SELECT `answer` FROM `tip_question` WHERE `question` = '$question'");
echo "
<table id=\"box-table-b\">
<thead>
<tr>
<th scope=\"col\">Answer</th>
</tr>
</thead>";
if($row = mysql_fetch_array($result))
{
echo "<tbody>";
echo "<tr>";
echo "<td>" . utf8_encode($row['answer']) . "</td>";
echo "</tr>";
echo "</tbody>";
}
echo "</table>";
我仍然可以从数据库中获得任何答案。有人可以告诉我为什么吗?
答案 0 :(得分:0)
答案 1 :(得分:-1)
ă,î,ş,ţ是特别章程。
所以,你使用的是utf-8编码。
还要检查链接:How to create an XML file with special charaters
使用以下代码:
if($row = mysql_fetch_array($result))
{
echo "<tbody>";
echo "<tr>";
echo "<td>" . utf8_encode($row['answer']). "</td>";
echo "</tr>";
echo "</tbody>";
}