Php 获取数组到字符串的转换错误
有人能帮我一下这个代码有什么问题吗?我正在尝试将提取的数据存储到一个数组中,我想基于该数组的值进行存储。我收到一个数组到字符串转换的错误。数组的数据类型值为Php 获取数组到字符串的转换错误,php,arrays,Php,Arrays,有人能帮我一下这个代码有什么问题吗?我正在尝试将提取的数据存储到一个数组中,我想基于该数组的值进行存储。我收到一个数组到字符串转换的错误。数组的数据类型值为string 这是密码 $sql3 ="SELECT DISTINCT subj_descr FROM subj_enrolled WHERE enroll_ref = '$ref'"; $results = mysqli_query($con, $sql3); $data
string
这是密码
$sql3 ="SELECT DISTINCT subj_descr FROM subj_enrolled WHERE enroll_ref = '$ref'";
$results = mysqli_query($con, $sql3);
$data = array();
while($row = mysqli_fetch_array($results)){
$data[] = array($row['subj_descr']);
}
$sql ="SELECT * FROM notification WHERE subj_descr IN ({implode(',', $data})";
$result = mysqli_query($con, $sql);
$count = mysqli_num_rows($result);
删除while循环中的
数组
:
$sql3 ="SELECT DISTINCT subj_descr FROM subj_enrolled WHERE enroll_ref = '$ref'";
$results = mysqli_query($con, $sql3);
$data = array();
while($row = mysqli_fetch_array($results)){
$data[] = $row['subj_descr'];
}
$sql ="SELECT * FROM notification WHERE subj_descr IN ({implode(',', $data})";
$result = mysqli_query($con, $sql);
$count = mysqli_num_rows($result);
您正在创建一个
多维
数组,因此请更改此语句
$data[] = array($row['subj_descr']);
到
由于语句中的SQL始终使用一维数组,所以在查询where子句中也要进行更改
我已全部更改,请尝试以下代码:
<?php
$sql3 ="SELECT DISTINCT subj_descr FROM subj_enrolled WHERE enroll_ref = '$ref'";
$results = mysqli_query($con, $sql3);
$data = array();
while($row = mysqli_fetch_array($results)){
$data[] = $row['subj_descr'];
}
$dataStr = implode(',', $data);
$sql ="SELECT * FROM notification WHERE subj_descr IN (".$dataStr.")";
$result = mysqli_query($con, $sql);
$count = mysqli_num_rows($result);
?>
创建一个新变量并在其中内爆
试试这个
$implodeAray = implode(",", $data);
$sql ="SELECT * FROM notification WHERE subj_descr IN ($implodeAray)";
循环时,将数组的元素存储在另一个数组中
这样做:
$sql3 ='SELECT DISTINCT subj_descr
FROM subj_enrolled
WHERE enroll_ref = "$ref"';
$results = mysqli_query($con, $sql3);
$data = array();
while($row = mysqli_fetch_array($results)){
//Your error was here
//Each elements is escaped for security reasons
$data[] = mysqli_escape_string($con,$row['subj_descr']);
}
//This implodes and puts a single quote around each element
$dataIn= '\'' . implode( '\', \'', $data ) . '\'';
$sql ="SELECT * FROM notification
WHERE subj_descr IN ($dataIn)";
$result = mysqli_query($con, $sql);
$count = mysqli_num_rows($result);
subu descr在({infrade(',',$data})中的位置出错;只需删除while循环中的数组,其余一切都很好,正如@Insomania所建议的那样,只需从这个数组($row['subu descr'])
中删除数组($row['subu descr'])
;稍微解释一下就可以让他明白了。我得到了一个错误'mysqli num rows()期望参数1是mysqli_result,布尔值在`中给出,但当我将其更改为` in('计算机编程1','计算机编程2');它工作了吗?我试图将$dataStr
放到vardump
中,我得到了字符串(59)“ENGLISH 2,KUMUNIKASYON,计算机编程2,数学2”的输出“
$dataStr有一个值,为什么我得到一个错误?回显此查询并直接在phpmyadmin中运行以检查确切的错误或可能是空的结果表示您的查询是错误的,因此mysqli_num_rows()期望参数1是mysqli_结果发生错误。或者与数据库中的任何记录都不匹配我得到的错误是`mysqli_num_rows()期望参数1是mysqli_result,布尔值在`中给出,但当我将其更改为` in('COMPUTER PROGRAMMING 1','COMPUTER PROGRAMMING 2'),它工作了吗?是的,如果数组中有字符串,则需要用引号('a','b','c')分隔它。在`中之前删除`并通过echo$sql显示查询。我得到了一个错误'mysqli_num_rows()期望参数1是mysqli_result,布尔值在`中给出,但当我将其更改为` in('计算机编程1','计算机编程2');它工作了吗?我试图将$dataIn放入vardump,我得到字符串(59)“ENGLISH 2,KUMUNIKASYON,COMPUTER PROGRAMMING 2,MATHEMATICS 2”的输出$dataIn有一个值,为什么我会出错?@wataru我已经更新了代码,将每个元素用一个引号括起来,但是在构建数组之前,必须在每个元素上运行mysql\u escape\u字符串,如$data[]=mysqli\u escape\u string($con,$row['subc\u descr'])
;它是空的..但我的数据库有两条记录。您可以再次检查您的查询您可以这样重写您的查询:$sql=“选择COUNT(*)作为sub descr IN($dataIn)”通知中的总计;
然后通过这种方式获取结果$row=mysqli\u fetch assoc($sql);echo$row['total'];
$sql3 ='SELECT DISTINCT subj_descr
FROM subj_enrolled
WHERE enroll_ref = "$ref"';
$results = mysqli_query($con, $sql3);
$data = array();
while($row = mysqli_fetch_array($results)){
//Your error was here
//Each elements is escaped for security reasons
$data[] = mysqli_escape_string($con,$row['subj_descr']);
}
//This implodes and puts a single quote around each element
$dataIn= '\'' . implode( '\', \'', $data ) . '\'';
$sql ="SELECT * FROM notification
WHERE subj_descr IN ($dataIn)";
$result = mysqli_query($con, $sql);
$count = mysqli_num_rows($result);