1樓:擼程式碼的鄉下人
$s = 'ss';
mysql_query("INSERT INTO Comment (comment, date, username, signature) VALUES ('$s', NOW(), '111', $signature)");
等於
$s = 'ss';
$s1 = "INSERT INTO Comment (comment, date, username, signature) VALUES ('$s', NOW(), '111', $signature)";
mysql_query($s1);
PHP 在string內可以使用變數,變數會在賦值時合併在裡面,但是建議這樣使用。
也就是說進入 mysql_query 內的值是:
INSERT INTO Comment (comment, date, username, signature) VALUES ('ss', NOW(), '111', $signature)
mysql_query 方法傳入的值是乙個SQL,SQL對於string型別要加引號,這是SQL的規範,與PHP無關。
MixPHP —— 基於 Swoole 的常駐記憶體型 PHP 框架
mixstart/mixphp
2樓:eechen
$s='ss';
mysql_query("
INSERT INTO Comment (comment, date, username, signatureVALUES ('$s', NOW(), '111', $signature)
");對SQL語句中'$s'的解釋:
因為$s變數對應comment欄位,而該字段的型別是字串.
在SQL語法中,字串賦值,就應該用單引號或雙引號括起來.
又因為PHP中整個SQL語句使用了雙引號,所以裡面的變數$s會被解析.
題外話:
PHP7已經不支援mysql擴充套件,建議使用mysqli或者pdo擴充套件.
防禦SQL注入應該使用預處理引數化查詢,比如:
$db = new mysqli($host, $user, $pass, $name, $port);
$db->set_charset('utf8'); // 指定編碼(重要)
$sql = "
INSERT INTO `comment` (comment, date, username, signature)
VALUES34;;
$stmt = $db->prepare($sql); // 預處理
$stmt->bind_param('ssss', $var1, $var2, $var3, $var4); // 引數化
$stmt->execute(); // 查詢
var_export(
($stmt->affected_rows === -1 || $stmt->affected_rows === 0) ? false : $stmt->insert_id
); // INSERT操作結果
Mysql為什麼選擇reapeatable read 作為預設的事務隔離級別
TY Liu 結論 如果你的 binlog 是 row 行 或者 mixed 混用 的話,用 rc 就可以了.同乙個事務裡,如果前後兩次讀到的值不一致,自然會讓人想到這是在別的地方被改變了,這是符合人直覺的.比如像銀行卡裡面少錢了卻讀不出來 假定事務週期很長 這反倒是不符合直覺的 但是如果你的 bi...
php為什麼會這樣顯示
Shirne 出現這個問題的原因,其他答主都有說明。我的解決方法就是,需要取整 保留精度 的情況,都使用round轉換 num round 0.1 0.7 10 第二個引數表示保留精度 money round 0.1 0.7 10,2 int 這種寫法,屬於強制型別轉換,比如從客戶端接收乙個id引數...
PHP 為什麼沒有取代 Python ?
飄逸 PHP 和python是兩種不同的語言。它們都是指令碼工具,都是為了更好的解決一些場景的問題而孕育而生的。它們可能會隨著使用的場景消失而消失,比如說 語言基本上就是隨著window 的 VB一樣。 Abby Chau 學乙隻新語言比起用一種不合適的語言來控制非官方API 更省力。Php 還可以...