Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果字符串中有,则不会显示表中的数据。停止执行_Php_Mysqli_Php 7 - Fatal编程技术网

Php 如果字符串中有,则不会显示表中的数据。停止执行

Php 如果字符串中有,则不会显示表中的数据。停止执行,php,mysqli,php-7,Php,Mysqli,Php 7,因此,我使用表单将数据输入到我的表中,并使用 $username = mysqli_real_escape_string($con, $_POST['username']); mysqli_real_escape_字符串用于处理SQL注入。如果有人试图使用某个脚本作为输入,那么使用此方法将导致数据按如下方式保存 当然,注入不会发生,但我注意到,在尝试从表中检索数据时,一旦达到这样保存的用户名,执行就会停止。我试图编辑表格,删除部分并刷新页面,但正如预期的那样,执行没有停止并正确完成。我使

因此,我使用表单将数据输入到我的表中,并使用

$username =    mysqli_real_escape_string($con, $_POST['username']);
mysqli_real_escape_字符串用于处理SQL注入。如果有人试图使用某个脚本作为输入,那么使用此方法将导致数据按如下方式保存 当然,注入不会发生,但我注意到,在尝试从表中检索数据时,一旦达到这样保存的用户名,执行就会停止。我试图编辑表格,删除部分并刷新页面,但正如预期的那样,执行没有停止并正确完成。我使用以下代码从表中检索数据

require_once ('dbconnect.php');

$title= "The App";


$qry =  "SELECT * FROM businesses ";
$result = mysqli_query($con,$qry);
$info = array();

while($row_info = mysqli_fetch_assoc($result))
  { $info= $row_info;
echo " The ID:" . $row_info['buss_id'] . "<br>" . "The username:" . $row_info['username'] . "<br>";
  }

我在遵循一个教程,他们就是这样做的,但是很明显,我可以通过使用$row_info变量得到相同的结果。如有任何澄清,将不胜感激。谢谢。

如果我没弄错的话,你说的是从表单输入中删除javascript,例如,试图将恶意javascript保存到论坛/留言板,以便向所有其他访问者显示它们

这两种方法都是有效的,即试图欺骗您的程序运行不应该运行的SQL语句。当然,您应该在表单输入中使用它们。但它们是与您所关心的问题不同的抽象级别上的安全性

在保存到数据库或向任何人显示文本之前,您需要对文本输入进行修改。你应该

在字符串上使用;或 适当使用;或 如果不希望将HTML用于用户输入,可以使用将其转换为HTML保存纯文本。
在插入到数据库之前

$text =  addslashes(htmlspecialchars($text));
输出

$text = stripslashes(trim(implode('',explode('\\',$text))));

echo $text;

这应该很好

mysqli\u real\u escape\u字符串可以处理SQL注入:-不,不是。你必须使用事先准备好的声明来进行@Anant-非常感谢你的提醒,我会查一查的!在HTML文档中显示不应包含标记本身的字符串时,请使用htmlspecialchars$row_info['username']。看你是真正的MVP。你认为使用像这样的消毒功能可以吗?函数sanitize$data{return htmlentiestrip_tagsmysqli_real_escape_string$data;}不确定在何处使用此sanitize函数。SQL转义只有在插入之前才有意义。因此,对从DB中选择的数据使用它(如代码中所示)没有帮助。此外,如果您使用htmlentities,可能根本不需要使用strip_标记。此外,mysqli_*函数是旧的数据库使用方式,将来可能会像以前一样贬值。您最好学习并使用数据库查询。可能会有帮助。是的,我想对insert语句使用sanitize函数。像sanitize$username一样,从任何可疑标记中删除用户名,然后将其插入数据库。是的,我将致力于PDO风格。非常感谢您的帮助,而不是仅仅否决一个显然是初学者的问题。在这种情况下,我认为函数sanitize$data{return mysqli_real_escape_stringhtmlentities$data;}可以实现这一点。不过,我看到的通常做法是在插入之前转义SQL值,同时在显示之前清理数据。谢谢,这很有帮助=
$text = stripslashes(trim(implode('',explode('\\',$text))));

echo $text;