簡體   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