Php 使用in_数组比较MySQL数据

Php 使用in_数组比较MySQL数据,php,mysql,arrays,Php,Mysql,Arrays,我在MySQL中设置了一个包含两列的表: ID(自动增量) 最近播放(VARCHAR,设置为“144”或“2140”等) 我试图将mysql数据放入一个数组中,并将其与mysql外部定义的数据进行比较。但出于某种原因,它似乎不起作用。这是我的密码: $whichPlaylist是1个字符的整数,$num是3个字符的整数 //Note: These values are actually received through file_get_contents('textfile.txt'); $

我在MySQL中设置了一个包含两列的表:

  • ID(自动增量)
  • 最近播放(VARCHAR,设置为“144”或“2140”等)
我试图将mysql数据放入一个数组中,并将其与mysql外部定义的数据进行比较。但出于某种原因,它似乎不起作用。这是我的密码:

$whichPlaylist是1个字符的整数,$num是3个字符的整数

//Note: These values are actually received through file_get_contents('textfile.txt');
$whichPlaylist = "1";
$num = "44";

//Combine playlist number and video number
$joint = $whichPlaylist. "" .$num;


//Insert joint var into Mysql database
mysql_query("INSERT INTO recentlyplayed (numplayed) VALUES('$joint') ");


$query = "SELECT * FROM recentlyplayed";
$result = mysql_query($query) or die ("no query");

while($row = mysql_fetch_array($result))
{

$stored[] = $row['1'];
}


if (in_array($joint, $stored['1'])){
$reroll = 1;
}

echo $reroll;

即使MySQL表中有相同的$joint值,$reroll也不会回显1。这可能是因为插入$joint变量时有额外的间距吗?我实际上是从一个文本文件中获取$whichPlaylist和$num,该文件在数字后面有一个新行。感谢您的帮助。:)

在if语句之后移动While-End大括号,看看它是否有效。

在脚本中尝试以下代码:

$stored = array();
while($row = mysql_fetch_array($result)) {
  $stored[] = $row[1];
}

if (in_array($joint, $stored)){
  $reroll = 1;
}

数组是$stored(而不是$stored['1'])。

$row['1']
$stored['1']
是各自数组的元素,键为字符串值
'1'
。您可能指的是
$row[1]
$stored
,但您的代码还有很多其他错误。不要使用
ext/mysql
;将变量作为参数传递给准备好的语句;在选择列表中指定要获取的列,而不是使用
*
通配符;尽可能避免将整个结果集加载到数组中(例如,在可能的情况下将一些处理移到数据库中,或在获取时对每条记录执行处理);尽快退出循环。
mysql
-扩展已经过时,不再维护,将被标记为不推荐使用PHP5.5。使用
PDO_-MySQL
,或
MySQLi