PHP,PDO,这个函数是安全的吗,如果不是我需要在这里介绍的其他内容的话

PHP,PDO,这个函数是安全的吗,如果不是我需要在这里介绍的其他内容的话,php,pdo,Php,Pdo,PDO连接为: public function __construct(){ $this->conn = new PDO("mysql:host=localhost;dbname=dms","root",""); $this->conn->exec("SET CHARACTER SET utf8"); } 下面是获取所需行结果的函数 public function getAny() { $stmt9 = $this->conn

PDO连接为:

  public function __construct(){
    $this->conn = new PDO("mysql:host=localhost;dbname=dms","root","");
    $this->conn->exec("SET CHARACTER SET utf8");
}
下面是获取所需行结果的函数

public function getAny() {
            $stmt9 = $this->conn->prepare("SELECT * FROM " . self::$table_name);
            $stmt9->execute();
            return $stmt9 = $stmt9->fetchAll();
            }
在打开视图之后,我们将在运行函数后取出行。 这是view.php

         $doc = $organ->getAny();
         if(count($doc)){
            foreach($doc as $data){
                    echo $data['id'] . "<br />";
                            echo $data['nameARABIC'] . "<br />";
                    }
$doc=$organe->getAny();
如果(计算($doc)){
foreach($doc作为$data){
echo$data['id']。“
”; echo$data['nameARABIC']。“
”; }
this view.php安全吗?我还应该做些什么来保护更多信息。
尽管我建议您使用“SET NAMES UTF8”而不是“SET character SET”。或者更好,如果您使用的是php>=5.3.6,您可以在DSN中使用“charset”参数

此外,为了避免SQL注入,您应该始终避免将用户输入放入字符串中,然后将其用于SQL。例如,如果self::$table_name是用户输入(尽管不是),您应该小心,并执行以下两项操作之一:

  • 逃脱
  • 使用事先准备好的语句
最后:

return $stmt9 = $stmt9->fetchAll();
将返回分配是否已完成(true或false,而不是$stmt9->fetchAll()的内容)


正如YourCommonSense所指出的,最后一部分描述的行为是不正确的。

这个问题可能更适合所有这一切,因为我不能使用htmlspecialchars,因为如果我这样做,我的文本是阿拉伯语,它不会显示。@abas_-rafiq,所以你需要重新表述你的问题或创建一个新的问题。