Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MYSQL unserialize()问题_Php_Mysql_Serialization - Fatal编程技术网

PHP MYSQL unserialize()问题

PHP MYSQL unserialize()问题,php,mysql,serialization,Php,Mysql,Serialization,我的数据库中有一个“招聘人员”表,它具有不同的属性,其中一个是“职业”“Professions”是一个序列化数组,我从一个多选表单中获取。这个很好用 当我取消序列化此属性时,不会打印任何内容-没有错误,没有文本 这是我用来测试序列化的代码: $sql = 'SELECT Company_name, Status, Size, Professions, Seniority_levels, Sector, Website, Location FROM Recruiter'; $query = mys

我的数据库中有一个“招聘人员”表,它具有不同的属性,其中一个是“职业”<代码>“Professions”是一个序列化数组,我从一个多选表单中获取。这个很好用

当我取消序列化此属性时,不会打印任何内容-没有错误,没有文本

这是我用来测试序列化的代码:

$sql = 'SELECT Company_name, Status, Size, Professions, Seniority_levels, Sector, Website, Location FROM Recruiter';
$query = mysql_query($sql, $con);
while($result = mysql_fetch_array($query, MYSQL_BOTH)){
    $recruiters[] = array($result[0], $result[1], $result[2], $result[3], $result[4], $result[5], $result[6], $result[7]);
}

foreach($recruiters AS $recruiter){
    $test = unserialize($recruiter[3]);
    echo $test[0].'<br>';
}
$sql='从招聘人员处选择公司名称、状态、规模、职业、资历、行业、网站、地点';
$query=mysql\u查询($sql,$con);
而($result=mysql\u fetch\u数组($query,mysql\u两者)){
$recruiters[]=数组($result[0]、$result[1]、$result[2]、$result[3]、$result[4]、$result[5]、$result[6]、$result[7]);
}
foreach($recruiters作为$recruiter){
$test=取消试用($recruiter[3]);
echo$test[0]。
; }

因此,基本上$test[0]不打印任何内容,尽管打印了新行。请帮忙

尝试打印$test数组和$recruiters以及$recruiter数组。在数据未序列化之前,查看结果是否良好。如果查询返回任何数据。还可以尝试mysql_fetch_assoc的while循环。让我知道结果,如果这解决了问题

请尝试打印$test数组和$creaters以及$creater数组。在数据未序列化之前,查看结果是否良好。如果查询返回任何数据。还可以尝试mysql_fetch_assoc的while循环。让我知道结果以及这是否解决了问题($recruiter[3])应该变成
test=unserialize($recruiter[5])因为扇区字段是第六列

但是,如果将来您可能需要选择扇区等于smth的行,该怎么办?序列化那些对你没有帮助的东西,所以我建议你看看一个不同的实现,它叫做bitwize


编辑

如果你点击右边的列,该列包含
a:1:{i:0;s:27:a:1:{i:0;s:27:a:38:{i:0;s:27:a:9:{i:0;s:39:
,序列化数组似乎没有完全保存在数据库中,它只是其中的一部分。因此,unserialize函数不会返回数组。请查看mysql字段的长度,我假设您已将其设置为小于所需的长度,因此在插入/更新时会对数据进行修剪


编辑

a:1:{i:0;s:27:
您仍然缺少序列化数组的其余部分。
s:27:
表示字符串后面包含27个字符,序列化数组将在看起来像
a:1:{i:0;s:27:“1234567890012345678901234567”}

a:1
表示包含1个值的数组,其内容介于
{}
之间,
i:0;
是数组键0,
s:27:;
表示包含27个字符的字符串,作为
i:0
键的值)。

test=unserialize(
test[3]);
应变为
test unserialize($recruiter[5]);
,因为扇区字段是第六列

但是,如果在将来的某个地方,您可能需要选择扇区等于smth的行,那么该怎么办?序列化whot会对您有所帮助,因此我建议您查看一个不同的扇区实现,称为bitwize


编辑

如果你点击右边的列,该列包含
a:1:{i:0;s:27:a:1:{i:0;s:27:a:38:{i:0;s:27:a:9:{i:0;s:39:
,序列化数组似乎没有完全保存在数据库中,它只是其中的一部分。因此,unserialize函数不会返回数组。请查看mysql字段的长度,我假设您已将其设置为小于所需的长度,因此在插入/更新时会对数据进行修剪


编辑

a:1:{i:0;s:27:
您仍然缺少序列化数组的其余部分。
s:27:
表示字符串后面包含27个字符,序列化数组将在看起来像
a:1:{i:0;s:27:“1234567890012345678901234567”}


a:1
代表一个数组,其中包含一个值,其内容在
{}
之间,
i:0;
是数组键0,
s:27:;
代表一个字符串,该字符串包含27个字符,作为
i:0
键的值)。

打印$test=$recruiter[3],因此数组给我:a:1:{i:0;s:27:a:1:{i:0;s:27:a:38:{i:0;s:27:a:9:{i:0;s:39:hmmmm…这很奇怪…请尝试打印非序列化($recruiter[3]);我认为问题可能是您创建的数组可能没有$test[0],而是有类似$test[1]的东西;所以打印$test的未序列化结果,看看会出现什么,然后告诉我。警告:在第70行的/srv/disk7/783806/www/piotrchabros.pl/results.php中,mysql_fetch_assoc()的参数计数错误,请尝试打印未序列化的$test而不是$test[0];打印未序列化的($recruiter[3])不会打印任何内容。打印$test=$recruiter[3],所以数组给了我:a:1:{i:0;s:27:a:1:{i:0;s:27:a:38:{i:0;s:27:a:9:{i:0;s:39:hmmmm……这很奇怪……你能试着打印unserialize($recruiter[3])吗;我想问题可能是你创建的数组可能没有$test[0],而是有类似$test[1]的东西;所以打印$test的未序列化结果,看看会出现什么,然后告诉我。警告:第70行/srv/disk7/783806/www/piotrchabros.pl/results.php中mysql_fetch_assoc()的参数计数错误尝试打印未序列化的$test而不是$test[0];打印未序列化的($recruiter[3])什么也不打印。对不起,是专业,不是部门。同样,没有非序列化的打印测试给我a:1:{i:0;s:27:a:1:{i:0;s:27:a:38:{i:0;s:27:a:9:{i:0;s:39:不,你搞错了。它打印结果的4倍,所以一列包含a:1:{i:0;s:27:,另一列包含a:1:{i:0;s:27:etc.不,我没有弄错。请查看最后一次编辑。请检查您的mysql字段的长度。好的,那么可能我的数据库有问题吗?教授