警告:mysql_real_escape_string()期望参数1是字符串 [英] Warning: mysql_real_escape_string() expects parameter 1 to be string
本文介绍了警告:mysql_real_escape_string()期望参数1是字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
< tr>
< td>< input type =textname =batch_code []required =requiredvalue =<?php if(isset($ batch_code [0]))echo htmlentities($ batch_code [0]);?>/>< / td>
< td>< input type =textname =description []value =<?php if(isset($ description [0]))echo htmlentities($ description [0]) ;?>/>< / td>
< td>< input type =textname =current_value []value =<?php if(isset($ current_value [0]))echo htmlentities($ current_value [0]) ;?>/>< / td>
< td>< input type =textsize =12name =qty []required =requiredvalue =<?php if(isset($ qty [0]) )echo htmlentities($ qty [0]);?>/>< / td>
< td>< select id =asset_idclass =asset_idname =asset_id [0] []multiple =multiplerequired>
<?php foreach($ asset_ids as $ asset_id):?>
< option class =dropdownlist><?php echo $ asset_id-> asset_id; ?>< /选项>
<?php endforeach; ?>
< / select>< / td>
< / tr>
< tr>
< td>< input type =textname =batch_code []required =requiredvalue =<?php if(isset($ batch_code [1]))echo htmlentities($ batch_code [1]);?>/>< / td>
< td>< input type =textname =description []value =<?php if(isset($ description [1]))echo htmlentities($ description [1]) ;?>/>< / td>
< td>< input type =textname =current_value []value =<?php if(isset($ current_value [1]))echo htmlentities($ current_value [1]) ;?>/>< / td>
< td>< input type =textsize =12name =qty []required =requiredvalue =<?php if(isset($ qty [1]) )echo htmlentities($ qty [1]);?>/>< / td>
< td>< select id =asset_idclass =asset_idname =asset_id [1] []multiple =multiplerequired>
<?php foreach($ asset_ids as $ asset_id):?>
< option class =dropdownlist><?php echo $ asset_id-> asset_id; ?>< /选项>
<?php endforeach; ?>
< / select>< / td>
< / tr>
我的php代码是
$ count = count(array_filter($ this-> asset_id)) - 1;
for($ value = 0; $ value <= $ count; $ value ++){
$ count_asset = count(array_filter($ this-> asset_id)) - 1;
for $($ asset_value = 0; $ asset_value< = $ count_asset; $ asset_value ++){
$ sql =INSERT INTO dispatch_items(;
$ sql。=dis_id,batch_code, ('';
$ sql。= $ database-> escape_value($ this-> dis_id)。', '';
$ sql。= $ database-> escape_value($ this-> batch_code [$ value])。',';
$ sql。= $ database-> escape_value ($ this-> asset_id [$ value] [$ asset_value])。',';
$ sql。= $ database-> escape_value($ this-> description [$ value])。 ',';
$ sql。= $ database-> escape_value($ this-> current_value [$ value])。',';
$ sql。= $ database- > escape_value($ this-> qty [$ value])。');
$ query = $ datanase-> query($ sql);
$ sql =UPDATE asset_manager SET;
$ sql。=location ='。$ database-> escape_value($ this-> rstore_code)。',;
$ sql。=dis_id ='。$ database-> escape_value($ this-> dis_id)。';
$ sql。=WHERE asset_id ='。$ database-> escape_value($ this-> asset_id [$ value] [$ asset_value])。';
$ sql。=AND batch_code ='。$ database-> escape_value($ this-> batch_code [$ value])。';
$ query = $ database-> query($ sql);
$ b我想要将多个表单数据插入数据库,给每个 batch_code []
用户选择多个 asset_id [] []
,但是当插入到数据库时,警告:mysql_real_escape_string()期望参数1是字符串,在D中给出数组:\assetmanagement\第52行包含\database.php
public function escape_value($ value){
if($ this-> real_escape_string){// PHP v4.3.0或更高版本
//撤消任何魔术引用效果,因此mysql_real_escape_string可以完成这项工作
if($ this-> magic_quotes_active ){$ value = stripslashes($ value);}
$ value = mysql_real_escape_string($ value); \\\ line 53
} else {//在PHP v4.3.0之前
/ /如果魔术引号尚未打开,则手动添加斜线
if( !$ this-> magic_quotes_active){$ value = addslashes($ value); }
//如果魔术引号处于活动状态,则斜线已经存在
}
return $ value;
}
我该如何解决这个错误..?
$ b $ ($ this)
if($ this- > real_escape_string){// PHP v4.3.0或更高版本
检查php版本
phpversion()
或
function_exists('real_escape_string')
HTML CODE
<tr>
<td><input type="text" name="batch_code[]" required="required" value="<?php if(isset($batch_code[0]))echo htmlentities($batch_code[0]); ?>"/></td>
<td><input type="text" name="description[]" value="<?php if(isset($description[0]))echo htmlentities($description[0]); ?>"/></td>
<td><input type="text" name="current_value[]" value="<?php if(isset($current_value[0]))echo htmlentities($current_value[0]); ?>"/></td>
<td><input type="text" size="12" name="qty[]" required="required" value="<?php if(isset($qty[0]))echo htmlentities($qty[0]); ?>"/></td>
<td><select id="asset_id" class="asset_id" name="asset_id[0][]" multiple="multiple" required>
<?php foreach($asset_ids as $asset_id): ?>
<option class="dropdownlist"><?php echo $asset_id->asset_id; ?></option>
<?php endforeach; ?>
</select></td>
</tr>
<tr>
<td><input type="text" name="batch_code[]" required="required" value="<?php if(isset($batch_code[1]))echo htmlentities($batch_code[1]); ?>"/></td>
<td><input type="text" name="description[]" value="<?php if(isset($description[1]))echo htmlentities($description[1]); ?>"/></td>
<td><input type="text" name="current_value[]" value="<?php if(isset($current_value[1]))echo htmlentities($current_value[1]); ?>"/></td>
<td><input type="text" size="12" name="qty[]" required="required" value="<?php if(isset($qty[1]))echo htmlentities($qty[1]); ?>"/></td>
<td><select id="asset_id" class="asset_id" name="asset_id[1][]" multiple="multiple" required>
<?php foreach($asset_ids as $asset_id): ?>
<option class="dropdownlist"><?php echo $asset_id->asset_id; ?></option>
<?php endforeach; ?>
</select></td>
</tr>
And My php codes are
$count = count(array_filter($this->asset_id))-1;
for($value = 0; $value <= $count; $value++){
$count_asset = count(array_filter($this->asset_id))-1;
for($asset_value = 0; $asset_value <= $count_asset; $asset_value++){
$sql = "INSERT INTO dispatch_items (";
$sql .= "dis_id, batch_code, asset_id, description, current_value, qty";
$sql .= ") VALUES ('";
$sql .= $database->escape_value($this->dis_id) ."', '";
$sql .= $database->escape_value($this->batch_code[$value])."', '";
$sql .= $database->escape_value($this->asset_id[$value][$asset_value]) ."', '";
$sql .= $database->escape_value($this->description[$value]) ."', '";
$sql .= $database->escape_value($this->current_value[$value]) ."', '";
$sql .= $database->escape_value($this->qty[$value]) ."')";
$query = $datanase->query($sql);
$sql = "UPDATE asset_manager SET ";
$sql .= "location='".$database->escape_value($this->rstore_code)."', ";
$sql .= "dis_id='".$database->escape_value($this->dis_id)."' ";
$sql .= "WHERE asset_id='".$database->escape_value($this->asset_id[$value][$asset_value])."' ";
$sql .= "AND batch_code='".$database->escape_value($this->batch_code[$value])."' ";
$query = $database->query($sql);
}
}
I'm trying insert multiple form data to database and give option to user select multiple asset_id[][]
for every batch_code[]
but when inset it to database keep getting this error.. :(
Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in D:\assetmanagement\includes\database.php on line 52
public function escape_value( $value ) {
if( $this->real_escape_string ) { // PHP v4.3.0 or higher
// undo any magic quote effects so mysql_real_escape_string can do the work
if( $this->magic_quotes_active ) { $value = stripslashes( $value ); }
$value = mysql_real_escape_string( $value );\\ line 53
} else { // before PHP v4.3.0
// if magic quotes aren't already on then add slashes manually
if( !$this->magic_quotes_active ) { $value = addslashes( $value ); }
// if magic quotes are active, then the slashes already exist
}
return $value;
}
How can i fix this error..?
解决方案 Instead of using
if( $this->real_escape_string ) { // PHP v4.3.0 or higher
check php version with
phpversion()
or
function_exists('real_escape_string')
这篇关于警告:mysql_real_escape_string()期望参数1是字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文