0
我正在嘗試使用包含「IN」子句的預處理語句進行mysql查詢。 這是結:在子句中的PHP沒有爲預處理語句工作
$stmt1 = $c->db->prepare("SELECT ITEM_URL,VIRALITY FROM RSSINGEST WHERE userid=(?) AND ITEM_URL IN (SELECT url FROM person_url WHERE person=(?) AND userid=(?))");
$stmt1->bind_param("sss", $userid,$name,$userid);
不過,我總是得到錯誤:「調用一個成員函數bind_param()......」的時候,準備的說法是錯誤的發生。
基本上我試圖從一個用戶那裏找到所有的URL,這些用戶在另一個表中也有這些URL。在這個名爲「person_url」的其他表中,每個條目都有一個「人」。正如你在聲明中看到的,我只想要那些有特殊「人」的人。
也許有人可以告訴我,如果有其他方式來做到這一點或錯誤是什麼?
編輯1:userid是一個字符串,他們的名字可能會引起誤解。
編輯2:在其最好的隧道願景:兩個表創建聲明:
CREATE TABLE IF NOT EXISTS `rssingest` (
`item_id` varchar(500) CHARACTER SET latin1 NOT NULL,
`feed_url` varchar(512) CHARACTER SET latin1 DEFAULT NULL,
`item_title` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
`item_date` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`item_url` varchar(512) CHARACTER SET latin1 NOT NULL,
`item_category_id` int(11) DEFAULT NULL,
`fetch_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`fb_share` int(11) DEFAULT NULL,
`fb_like` int(11) DEFAULT NULL,
`fb_comment` int(11) DEFAULT NULL,
`tw_count` int(11) DEFAULT NULL,
`pinterest` int(11) DEFAULT NULL,
`linkedin` int(11) DEFAULT NULL,
`googleplus` int(11) DEFAULT NULL,
`stumbleupon` int(11) DEFAULT NULL,
`virality` int(11) DEFAULT NULL,
`userID` varchar(200) COLLATE utf8mb4_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
CREATE TABLE IF NOT EXISTS `people_url` (
`person` varchar(100) CHARACTER SET latin1 NOT NULL,
`url` varchar(500) CHARACTER SET latin1 NOT NULL,
`virality` int(20) NOT NULL,
`insertdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`userID` varchar(200) COLLATE utf8mb4_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
編輯3:完全錯誤
Fatal error: Call to a member function bind_param() on a non-object in C:\xampp\htdocs\monitorUser\websiteBuilder.php on line 163
編輯4。我在聲明中寫了person_url而不是people_url。謝謝大家。
'userid'不是INT? –
沒有用戶名可能是一個壞名字,但它是一個字符串 – user3410232
告訴我們兩個表的CREATE TABLE語句請 – Alex