我有一个表contacts
,其中包含一个字段arrayOfMembers
(JSON 格式)和一个表users
,其中包含字段userId
(int)。
$recipientId=getUserIdForEmail($recipientEmail);
addUserIdToContactsMemberIds($noteId, $recipientId);
function addUserIdToContactsMemberIds($noteId, $userId)
{
$memberData=mysql_query("SELECT * FROM contacts WHERE contactId='$contactId'");
$memberResultData = mysql_fetch_assoc($memberData);
$arrayOfMemberIds=json_decode($memberResultData['arrayOfMembers']);
$arrayOfMemberIds[]=$userId;
$sendback=json_encode($arrayOfMemberIds);
mysql_query("UPDATE notes SET arrayOfMembers='$sendback' where contactId='$contactId'");
}
function getUserIdForEmail($email)
{
$data=mysql_query("SELECT userId FROM users WHERE userEmail='$email'");
$result = mysql_fetch_assoc($data);
return $result["userId"];
}
但是,$userId
被存储为带引号的字符串,因此如果我最初有 [1],在添加新的 userId 后,它看起来像这样 [1,"2 "] 即使它应该看起来像 [1,2]。
如果我在行中手动输入 int 值:$arrayOfMemberIds[]=$userId;
并输入 $arrayOfMemberIds[]=5
,那么我会得到正确的结果结果,即[1,5]。为什么会发生这种情况?
最佳答案
如果您对 ID 为字符串有疑问(在大多数情况下,这没什么大不了的),那么只需使用 intval()
:
$arrayOfMemberIds[] = intval($userId);
或
return intval($result["userId"]);
为什么是字符串?
mysql_fetch_assoc
将所有值以字符串
形式返回,无论数据库中的类型如何。直接来自 PHP 文档:
Returns an associative array of strings that corresponds to the fetched row, or FALSE if there are no more rows. - http://php.net/mysql_fetch_assoc
关于php - 为什么要在我的表中插入一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9984856/