使用?
的價值和你的價值觀綁定到查詢。我其實不能給你一個例子。
這也是在PHP documentation描述:
可以使用參數與所述的mysqli語句對象它是如何在第一個例子中示出了用於Documentation的面向對象的樣式結合:
實施例#1面向對象的風格
<?php
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
/* execute prepared statement */
$stmt->execute();
printf("%d Row inserted.\n", $stmt->affected_rows);
/* close statement and connection */
$stmt->close();
/* Clean up table CountryLanguage */
$mysqli->query("DELETE FROM CountryLanguage WHERE Language='Bavarian'");
printf("%d Row deleted.\n", $mysqli->affected_rows);
/* close connection */
$mysqli->close();
?>
並且當它在第二個例子中描述的也可作爲程序性樣式。
例2程序風格
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$city = "Amersfoort";
/* create a prepared statement */
$stmt = mysqli_stmt_init($link);
if (mysqli_stmt_prepare($stmt, 'SELECT District FROM City WHERE Name=?')) {
/* bind parameters for markers */
mysqli_stmt_bind_param($stmt, "s", $city);
/* execute query */
mysqli_stmt_execute($stmt);
/* bind result variables */
mysqli_stmt_bind_result($stmt, $district);
/* fetch value */
mysqli_stmt_fetch($stmt);
printf("%s is in district %s\n", $city, $district);
/* close statement */
mysqli_stmt_close($stmt);
}
/* close connection */
mysqli_close($link);
?>
此代碼有很多問題。你不想連接開始。你希望每個值都被插入到數據庫中,對嗎?這也是注意使用預準備語句的正確方法。 http://php.net/manual/en/pdo.prepared-statements.php或http://php.net/manual/en/mysqli.quickstart.prepared-statements.php我認爲這也應該扔500 。 – chris85
你需要學習基本的PHP語法,以及如何不讓自己容易受到[sql注入攻擊](http://bobby-tables.com) –
如果有人最常見的評論,這是「sql注入攻擊」。這讓我想知道爲什麼不明顯這是做錯事情的錯誤方式。比如,PHP應該棄用它的使用或完全禁止它。不知何故。 – durbnpoisn