次のエラーが表示されます。
警告: mysql_real_escape_string() は、パラメーター 1 が文字列であると想定し、配列は bla bla で指定されます
これを生成するコードは次のとおりです。
if($_POST['action'] == 'Napadi') {
$igralec_ime = $_SESSION['username'];
$igralec = array (
'ime' => $igralec_ime,
'napad' => prikazi_stat('ofe',$igralec_ime),
'obramba' => prikazi_stat('def',$igralec_ime),
'curhp' => prikazi_stat('curhp',$igralec_ime)
);
$monster_ime = $_POST['monster'];
$monster = array (
'ime' => $monster_ime,
'napad' => prikazi_monster_stat('ofe',$monster_ime),
'obramba' => prikazi_monster_stat('def',$monster_ime),
'curhp' => prikazi_monster_stat('maxhp',$monster_ime)
);
$combat = array();
$turns = 0;
while($igralec['curhp'] > 0 && $monster['curhp'] > 0) {
if($turns % 2 != 0) {
$napadalec = &$monster;
$branilec = &$igralec; }
else {
$napadalec = &$igralec;
$branilec = &$monster; }
$damage = 0;
if($napadalec['napad'] > $branilec['obramba']) {
$damage = $napadalec['napad'] - $branilec['obramba']; }
$branilec['curhp'] -= $damage;
$combat[$turns] = array(
'napadalec' => $napadalec['ime'],
'branilec' => $branilec['ime'],
'damage' => $damage
)
$turns++; }
$_SESSION['monster'] = $monster;
上記のコードは、ご覧のとおり変数 $monster を配列に配置します。このページがビュー ページにリダイレクトされ、関数update_save($igralec_ime, 'gozd', $monster);
を更新しようとすると、上記の警告が表示されます。これは、ページが次のような一連のモンスター変数を返すためです。
Matic napade Velikanski komar in mu napravi poškodbe za 2 točk zdravja
Velikanski komar napade Matic in mu napravi poškodbe za 1 točk zdravja
Matic napade Velikanski komar in mu napravi poškodbe za 2 točk zdravja
Velikanski komar napade Matic in mu napravi poškodbe za 1 točk zdravja
などですが、直し方がわかりません。この出力配列を文字列に戻す必要がありますか?
編集: 問題のある機能を持つコード
function update_save($igralec_name, $lokacija, $monster_name = null) {
ustvari_save($igralec_name, $lokacija, $monster_name);
$query = sprintf("UPDATE igralec_save SET lokacija = '%s', monster_name = '%s' WHERE igralec_name = '%s'",
mysql_real_escape_string($lokacija),
mysql_real_escape_string($monster_name),
mysql_real_escape_string($igralec_name));
$result = mysql_query($query);
}