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 を持っている 1 人のユーザーからすべての URL を見つけようとしています。「person_url」と呼ばれるこの別のテーブルには、すべてのエントリにも「person」があります。ステートメントでわかるように、特別な「人」が含まれているものだけが欲しいです。

これを行う他の方法があるかどうか、またはエラーがどこにあるかを誰かが教えてくれるでしょうか?

EDIT 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: 完全なエラー

致命的なエラー: 163行目のC:\xampp\htdocs\monitorUser\websiteBuilder.phpの非オブジェクトに対するメンバー関数 bind_param() の呼び出し

編集 4: 最高のトンネル ビジョン。people_url の代わりに person_url をステートメントに書きました。みんなありがとう。

4

1 に答える 1