繁体   English   中英

为什么要在表中插入字符串?

[英]Why is this inserting a string into my table?

我有一个表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_assocstring的形式返回所有值,而与数据库中的类型无关。 直接来自PHP文档:

返回与提取的行相对应字符串关联数组,如果没有更多行,则返回FALSE。 -http://php.net/mysql_fetch_assoc

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM