當我必須通過也使用引號的PHP語句放置引號時,我無法將包含引號的mySQL查詢放在一起,而且當我添加PHP變量時,這會變得更加混亂。到目前爲止,我所得到的最好的是這樣的:PHP和mySQL中的引號
$sqlQuery = 'SELECT document FROM `mentioned_places` WHERE name="'.$mentionedPlace.'";';
這實際上只是一個引號的泥潭。有沒有更簡單的方法來做到這一點?
當我必須通過也使用引號的PHP語句放置引號時,我無法將包含引號的mySQL查詢放在一起,而且當我添加PHP變量時,這會變得更加混亂。到目前爲止,我所得到的最好的是這樣的:PHP和mySQL中的引號
$sqlQuery = 'SELECT document FROM `mentioned_places` WHERE name="'.$mentionedPlace.'";';
這實際上只是一個引號的泥潭。有沒有更簡單的方法來做到這一點?
您可以使用double quotes:
$sqlQuery = "SELECT document FROM `mentioned_places` WHERE name='$mentionedPlace'";
但是你最好不要使用prepared statements要麼庫MySQLi或PDO。
使用的mysqli:
$db = new mysqli(...);
$sql = "SELECT document FROM `mentioned_places` WHERE name = ?";
$query = $db->prepare($sql);
$query->bind_param("s", $mentionedPlace);
$query->execute();
$query->bind_result($document);
$documents = array();
while ($query->fetch()) {
$documents[] = $document;
}
$db->close();
使用PDO:
try {
$db = new PDO('mysql:host=localhost;dbname=test;charset=UTF8', 'user', 'userpwd');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$sql = "SELECT document FROM `mentioned_places` WHERE name = ?";
$query = $db->prepare($sql);
$query->execute(array($mentionedPlace));
$documents = $query->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
echo "Exeption: " .$e->getMessage(); //TODO better error handling
}
$query = null;
$db = null;
使用預處理語句(庫MySQLi/PDO),你會從這個爛攤子:) – HamZa
http://php.net/manual/en/mysqli.prepare.php HTTP釋然:// PHP .net/manual/en/pdo.prepare.php –
此外,您可以直接在雙引號字符串中使用變量:'$ a =「Hello $ world」;' –