警告:mysql_real_escape_string()期望参数1是字符串 [英] Warning: mysql_real_escape_string() expects parameter 1 to be string

查看:195
本文介绍了警告:mysql_real_escape_string()期望参数1是字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

HTML CODE

 < 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆