[英]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_assoc
以string
的形式返回所有值,而與數據庫中的類型無關。 直接來自PHP文檔:
返回與提取的行相對應的字符串關聯數組,如果沒有更多行,則返回FALSE。 -http://php.net/mysql_fetch_assoc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.