假设您需要使用值$a, $b, $c插入到数据库行的表中,这些值可能是不安全的,表的名称作为常量存储在执行操作的类中。可以按如下方式进行查询
$query = "INSERT INTO `" . self::TABLE . '` ' .
"(a, b, c) VALUES (" .
. intval(a) .
",'" . mysql_real_escape_string(b) . "'" .
",'" . mysql_real_escape_string(b) . "')";这里有一个问题:有没有一种更优雅的方法来创建查询?
发布于 2012-05-12 20:30:59
它被称为预准备语句,它存在于MySQLi (好)或PDO (更好)中。我将为使用mysql_*的人添加我在评论中添加的常见内容
请停止使用古老的
mysql_*函数编写新代码。它们不再被维护,社区已经开始了deprecation process。相反,您应该学习准备好的语句,并使用PDO或MySQLi。如果你想学,here is a quite good PDO-related tutorial。
虽然在mysql_*函数中也可以这样做,但我强烈建议您不要使用 (really EPICLY)。
在PDO中,您的代码将如下所示:
$query = "INSERT INTO `" . self::TABLE . "` (a, b, c) VALUES (:a, :b, :c);";
$statement = $db_connection->prepare($query);
$statement->bindParam(":a", $a);
$statement->bindParam(":b", $b);
$statement->bindParam(":c", $c);
$statement->execute();发布于 2012-05-12 20:29:35
是的,是这样的。您可以也必须使用PDO或mysqli。顺便说一下,当你在数据库中插入整数时,你不需要'。
发布于 2012-05-12 20:30:12
有-使用Doctrine或Propel之类的ORM ...实际上,任何PHP框架都提供了对象关系模型,其中大多数都基于Active Record模式
https://stackoverflow.com/questions/10563725
复制相似问题