関数を機能させたい場合は、 $mysqli オブジェクトを引数として渡す必要があります
このような:
function secure ($string,$mysqli) {
$string = htmlspecialchars($string);
$string = strip_tags($string);
$string = stripcslashes($string);
$string = $mysqli -> real_escape_string($string);
return $string;}
この関数を使用しないでください。
1- オーバーキルで間違った @Dagon のコメントです。(同意)
2- mysqli を使用しているのに、準備済みステートメントを使用できるのに、なぜこれを行うのですか? @barmar のコメント。(同意)
3- データベースに入れるときは htmlspecialchars() を使用しないでください。@bamar コメントをレンダリングするときは htmlentities() を使用する必要があります。(同意)
上記は私にとって使用しない主な理由です
代わりに、マニュアルの例である
Prepare Staments を使用できます
/* create a prepared statement */
$stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?");
/* bind parameters for markers */
$stmt->bind_param("s", $city);
/* execute query */
$stmt->execute();
/* bind result variables */
$stmt->bind_result($district);
/* fetch value */
$stmt->fetch();
printf("%s is in district %s\n", $city, $district);
/* close statement */
$stmt->close();