PHP MYSQLi real_escape_string [关闭]

Posted

技术标签:

【中文标题】PHP MYSQLi real_escape_string [关闭]【英文标题】:PHP MYSQLi real_escape_string [closed] 【发布时间】:2012-09-06 06:56:35 【问题描述】:

这是我的查询运行代码:

$sqlm = getPageById();
if ($resultm = $mysqli->prepare($sqlm)) 

    $mypageid = 216;
    $resultm -> bind_param("i",$mypageid); 
    $resultm->execute();    
    $resultm->store_result();
    $rowsm = $resultm->num_rows;

if($rowsm > 0)

    $rowm = fetch($resultm);
    $pagetitle = $mysqli->real_escape_string($rowm[0]["page_title"]);
    $pageContent = $rowm[0]["page_content"];
    $pageurlname = $mysqli->real_escape_string($rowm[0]["page_name_url"]);


这是我的查询:

function getPageById()

    $sqlStr = "select * from tbl_pages where page_id = ?";
    return $sqlStr;

这就是我邮寄的内容:

$mysqli->real_escape_string ($_POST["page_content"]);

这是我的echo

$pageContent = $rowm[0]["page_content"];
<?=$pageContent?>

我在回声中遇到问题 我从数据库中得到这样的结果:

代替:*** .. 我得到:堆栈/r/n//over/r/n/flow 请问有什么帮助吗?

【问题讨论】:

问题出在...? 您忘记在问题中提问。 @michael:你有什么问题?您收到什么错误消息? 【参考方案1】:

mysqli_real_escape_string 用于清理您要插入到 SQL 查询中的字符串(如果您使用这种老式方式而不是使用准备好的语句)。它不用于处理查询的结果

如果您要将结果插入网页,您需要的函数是htmlentities。例如

$pagecontent = htmlentities($rowm[0]["pagecontent"]);

在查询数据库时使用准备好的语句可以防止 SQL 注入。将结果放在网页上时使用htmlentities 可防止跨站点脚本攻击。

【讨论】:

你的意思是当我插入数据库时​​我不需要real_escape_string? ...这是我在 $_POST 中发送的内容:$mysqli-&gt;real_escape_string ($_POST["page_content"]); ,,, 我应该在帖子中使用什么代码以及将结果回显到我的页面中的什么? 你的意思是我不需要使用$mysqli-&gt;real_escape_string?只是:$string = $_POST["fieldname"];?并在处理查询的结果时只是回显:$name = $row["name"];echo $name;? 我在你的原始问题中没有看到任何插入,所以我不知道你是否需要使用 mysqli_real_escape_string。这取决于您如何编写插入 - 如果您使用$mysqli-&gt;prepare,则不需要使用它。 啊,好吧,谢谢:D ...我是的,在我所有的查询中使用$mysqli-&gt;prepare,插入、编辑、更新,谢谢@Barmar先生 是的,它似乎是一个 SELECT,而不是一个 INSERT。【参考方案2】:

看起来好像数据是问题,而不是您的 php 代码。您确定这些换行符不在数据库中吗?

【讨论】:

是的,它们在数据库中:S ...因此我将我的 $_POST 代码:S ...它们在数据库中存储!

以上是关于PHP MYSQLi real_escape_string [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

php mysqli预编译

php mysqli mysqli_query() mysqli_real_query()

PHP中的MySQLi扩展学习MySQLi介绍

如何在php中扩展mysqli插件。

PHP 更改为 mysqli。 mysqli_connection 不是全局的吗?

PHP中的MySQLi扩展学习MySQLi介绍