簡體   English   中英

PHP + MySQL:創建查詢

[英]php + mysql: creating queries

假設,您需要將值$a, $b, $c插入db行的表中,這些值可能是不安全的,表名存儲在執行操作的類中為常量。 可以進行如下查詢

$query = "INSERT INTO `" . self::TABLE . '` ' .
    "(a, b, c) VALUES (" .
    . intval(a) .
    ",'" . mysql_real_escape_string(b) . "'" .
    ",'" . mysql_real_escape_string(b) . "')";

這里的問題是:有沒有更優雅的方式來創建查詢?

這就是預准備語句 ,它存在於MySQLi(良好)或PDO(更好)中。 我將為使用mysql_*人添加我在注釋中添加的普通內容:

請停止使用古老的mysql_*函數編寫新代碼。 它們已不再維護,社區已開始棄用過程 相反,您應該了解准備好的語句,並使用PDOMySQLi 如果您想學習, 這里有一個很好的PDO相關教程

雖然可以在mysql_*函數中執行此操作,但我強烈建議您(確實是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();

是的。 您可以/必須使用PDO或mysqli。 通過這種方式,當您在數據庫中插入整數時,您不需要'

有-使用ORD,例如DoctrinePropel ...幾乎任何PHP框架都提供ORM,其中大多數基於Active Record模式

是的,這是唯一可能的事情是,你會得到價值1在INTVAL 不安全值的E_NOTICE級別的錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM