mysql — php в предложении не работает для подготовленного оператора

Я пытаюсь сделать запрос mysql с подготовленным оператором, включающим предложение «IN».
Это утверждение:

$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» каждая запись также имеет «person». Я хочу только тех, у кого есть особый «человек», как вы можете видеть в заявлении.

Может быть, кто-то может сказать мне, если есть другой способ сделать это или где ошибка?

РЕДАКТИРОВАТЬ 1: идентификатор пользователя является строкой, их имя может вводить в заблуждение.

РЕДАКТИРОВАТЬ 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: Полная Ошибка

Фатальная ошибка: Вызов функции-члена bind_param () для необъекта в C: \ XAMPP \ HTDOCS \ monitorUser \ websiteBuilder.php онлайн 163

РЕДАКТИРОВАТЬ 4: Туннельное зрение во всей красе. Я написал person_url в заявлении вместо people_url. Спасибо всем.

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=(?))");
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector