0

我正在尝试使用包含“IN”子句的准备好的语句进行 mysql 查询。这是声明:

$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:用户 ID 是一个字符串,它们的名称可能会产生误导。

编辑 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:完全错误

致命错误:在第163行的C:\xampp\htdocs\monitorUser\websiteBuilder.php中的非对象上调用成员函数 bind_param()

编辑 4:最好的隧道视觉。我在声明中写了 person_url 而不是 people_url。谢谢大家。

4

1 回答 1

0

中的查询$stmt1应该是

$stmt1 = $c->db->prepare(
  "SELECT item_url, virality 
  FROM rssingest
  WHERE userid=(?)
  AND item_url IN (SELECT url FROM people_url WHERE person=(?) AND userid=(?))"
);
于 2015-12-24T03:07:23.867 回答