我使用的是MYSQL 5.5。我可以知道如何在SQL查询中避免'
吗?下面是我的示例查询:
<?php
$mySelect1 = "'Ahli Majlis'";
$bracket_mySelect1 = "($mySelect1)";
SQL = "SELECT * FROM user where 1 and nama_gelaran in ".$bracket_mySelect1."";
?>
我在控制台日志数据中检查的错误结果是SELECT * FROM user where 1 and nama_gelaran in ('Ahli Majlis')
实际上我想要的结果是SELECT * FROM user where 1 and nama_gelaran in ('Ahli Majlis')
我试过了,但不起作用:
SQL = SELECT * FROM user where 1 and nama_gelaran in ".html_entity_decode(htmlentities($bracket_mySelect1,ENT_QUOTES),ENT_QUOTES); .";
我不确定您是如何执行查询的,但最好使用PDO而不是mysql_函数。这也提高了安全性并防止mysql注入。
以下是如何连接和运行PDO查询的示例。我已经将您的IN
更改为=
,因为看起来您只传递了一个值。
$dsn = "mysql:host=localhost;dbname=mydb";
$user = "dbUsername";
$passwd = "dbPassword";
$name = 'Ahli Majlis';
$pdo = new PDO($dsn, $user, $passwd);
$stm = $pdo->query("SELECT * FROM `user` WHERE nama_gelaran = :name");
$stm->bindParam('name', $name);
$user = $stm->fetch();
print_r($user);
'
不是来自MySQL,除非是INSERTed
。它确实来自某些PHP函数,如htmlentities。它是'
。