Mysql データベースに単一引用符 (') を含む部品番号があります (例: 1234'xyz)。単一引用符で部品番号を正しく表示する選択リストを含む、かなり長いフォームの HTML ページがあります。ただし、フォーム POST の後、部品番号に一重引用符が含まれている場合、その部品番号は、一重引用符に続くすべての文字が切り捨てられて表示されます。上記の場合、品番は1234と表示されます。
これは、フォーム入力をエスケープしてフォームを投稿する方法です。
array_walk_recursive( $_POST, 'mysqli_real_escape_string' ); //escape the array
$array = array_filter($_POST); //remove empty values from the array
//---- convert key/values to string to insert as column names/values to insert
foreach ($array as $key => $value) {
$value = "'$value'";
$updates[] = "$key = $value";
}
$implodeArray = implode(', ', $updates);
$id=$_SESSION['Userid'];
$query = ("UPDATE Database
SET $implodeArray
WHERE Userid='$id'");
フォーム入力がエスケープされていない可能性はありますか?