我的php(更新)代码如下:
$ sql =" INSERT INTO uac_user(user_name,user_password,create_time,lastupdateTime)VALUES(' $ usernmae',' $ password',NOW(),NOW( ))&#34 ;;
if ($conn->query($sql) === TRUE) {
$last_id = $conn->insert_id; //get new id
$records = array(); //select role
if($result = $conn->query("SELECT role_id FROM uac_role WHERE `role_name` = '$role';")){
if($result->num_rows){
while ($row = $result->fetch_object()){
$records = $row;
}
$dateResult=(string)json_encode($records);
echo ($dateResult);
echo ($dateResult['role_id']);
// $sql2 = "INSERT INTO uac_mapping (role_id, user_id) VALUES ('$dateResult['role_id']', '$last_id')"; //insert mapping
// if ($conn->query($sql2) === TRUE) {
// echo "success";
// }
// else {
// echo "Error: " . $sql . "<br>" . $conn->error;
// }
}
else $records = 'no data';
}
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
die();
第一个回声[{&#34; role_id&#34;:&#34; 4&#34;}]
但第二次回归[
我需要的第二个是4
我的代码有什么问题?
答案 0 :(得分:1)
我认为你犯了一个常见的错误,即混淆JSON是什么,不是什么。 JSON是一种表示字符串中某些数据的方式,用于传输到另一个系统,在那里它将被转换回其他系统以供使用。 JSON是不是一种可以直接用于提取数据的对象。
仔细看看这一行:
$dateResult=(string)json_encode($records);
结果是$dateResult
是一个字符串 - 你甚至还有一个额外的(string)
,但即使没有the manual page for json_encode
,docs也会明确表示你总会有一个字符串:< / p>
返回包含所提供值的JSON表示的字符串。
然后运行:
$dateResult[role_id]
您正在尝试在字符串中查找role_id
。但是字符串只是一堆符号,它不知道&#34; role_id&#34;是。您已在$records
中构建了数据结构,您希望在其中查找role_id
。
如果$records
是一个数组,你想要的是$records['role_id']
(请注意'role_id'
周围的引号; role_id
将是常量的名称,而不是字符串)
如果$records
是一个对象,你想要的是$records->role_id
(这次没有引号,因为->role_id
更像是变量名而不是字符串。)
答案 1 :(得分:0)
你的json可能是一个对象数组,所以你可以遍历它们并使用类似的东西:
echo $dateResult[$counter]->role_id;
//$counter will be your loop incrementer;