PHP MySQL:如何使用干净的数据插入和读取数据库
我有一个MySQL数据库,有3列id、问题、答案。我用一段代码将get方法插入到数据库中,并对其进行了清理,但我正在mysqli中搜索一个方法。当我想从数据库中得到问题匹配的答案时,我会得到空白页。 这是我用来插入它的代码,但我需要mysqli:PHP MySQL:如何使用干净的数据插入和读取数据库,php,mysql,string,Php,Mysql,String,我有一个MySQL数据库,有3列id、问题、答案。我用一段代码将get方法插入到数据库中,并对其进行了清理,但我正在mysqli中搜索一个方法。当我想从数据库中得到问题匹配的答案时,我会得到空白页。 这是我用来插入它的代码,但我需要mysqli: require 'db.php'; function array_sanitize(&$item) { $item = htmlentities(strip_tags(mysql_real_escape_string($item))
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>";
我仍然无法从数据库中得到任何答案。有人能告诉我为什么吗?如果你得到一个问号,那么就有一个字符集问题。你可以试试
要将您的代码更改为mysqli,请检查ă、î、ș、ț是特殊特许 因此,您正在使用utf-8编码 另请检查链接: 使用以下代码:
if($row = mysql_fetch_array($result))
{
echo "<tbody>";
echo "<tr>";
echo "<td>" . utf8_encode($row['answer']). "</td>";
echo "</tr>";
echo "</tbody>";
}
. 它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。但是正在做同样的事情,我得到一个空白页,它不想与问题匹配,即使是utf8编码的。将此代码添加到您的连接文件$conn=mysql\U connectlocalhost、root或dieCan not connect。错误$db=mysql\u选择\u dbsub\u电视,$conn或dieCan无法连接。错误;mysql_query'SET NAMES UTF8;'$康涅狄格州;mysql\u query'SET COLLATION\u CONNECTION=utf8\u general\u ci;'$康涅狄格州;mysql_query'SET NAMES UTF8;'$分贝;mysql\u query'SET COLLATION\u CONNECTION=utf8\u general\u ci;'$分贝;mysql\u客户端\u编码$conn;