error explode()期望参数2为字符串,给定资源

时间:2015-07-03 01:58:00

标签: php

以下代码返回此错误。

  

explode()期望参数2为字符串,资源为

我做错了什么?

<?php
    $sql = mysql_query("SELECT MAX(no_trans) as nomor FROM tb_periksa");
    $trans_prefix = "08201";
    $x = explode($trans_prefix, $sql);
    $no_trans = $trans_prefix.str_pad(($x[1]+1), 4, "0", STR_PAD_LEFT);
?>
Nomor Transaksi: 
<input type="text" name="no_trans" id="no_trans" value=<?php echo sprintf($no_trans);?>>

3 个答案:

答案 0 :(得分:1)

您正试图爆炸返回的资源。你需要先获取它。如果它是多行,则需要循环获取。

list1 = ['A', 'U', 'C', 'C', 'A']
list2 = ['12', '14']
key = {'A12':'*', 'C14':'#'}

list3 = ['12', '14', '0', '0','0'] #build by myself
combo = list(set(itertools.permutations(list3, len(list3))))
list_combo = []
for each_list in combo:
new_list = []
for i in xrange(len(list1)):
    if list1[i]+each_list[i] in key:
        new_list.append(key[list1[i]+each_list[i]])
    else:
        new_list.append(list1[i])
    list_combo.append(new_list)
print list_combo

来自manual

  

返回的结果资源应该传递给mysql_fetch_array(),以及其他用于处理结果表的函数,以访问返回的数据。

以下是fetch_array的手册http://php.net/manual/en/function.mysql-fetch-array.php。另请注意,$row = mysql_fetch_array($sql, MYSQL_NUM); $row[0]; echo $row[0]; 函数现已弃用。现在,mysql_PDO函数应用于数据库交互。

完整(未经测试)的例子:

mysqli

答案 1 :(得分:1)

$('#cigptable').DataTable( { "pagingType": "full_numbers", "dom": 'T<"clear">lfrtip', "tableTools": { "sSwfPath": "../../../plugins/datatables/extensions/TableTools/swf/copy_csv_xls_pdf.swf" }, "oLanguage": { "oPaginate": { "sPrevious": '<i class="ion-ios-arrow-left"></i>', "sNext": '<i class="ion-ios-arrow-right"></i>' } } }); 使用第一个参数中提供的分隔符拆分字符串。

错误消息是正确的。您通过explode()变量将mysql_query的结果作为第二个参数传递给explode$sql返回资源类型,因此您的变量mysql_query属于资源类型而不是字符串。

请参阅documentation $sql功能。

explode()

此外,不推荐使用array explode ( string $delimiter , string $string [, int $limit ] ) 函数,将来的版本将不再支持这些函数。请使用mysql_*函数或PDO。

答案 2 :(得分:0)

您需要将MySQL查询结果传递给mysql_fetch *命令才能获得实际结果。您当前正在将对数据库结果集的引用传递给explode而不是结果集本身。