Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择一列中的多行_Php_Mysql - Fatal编程技术网

Php 选择一列中的多行

Php 选择一列中的多行,php,mysql,Php,Mysql,在MySQL中,如何选择一列的数据,仅针对另一列中同一行的值为session\u id的行(我需要所有值,而不仅仅是第一个值) 我试过这个: SELECT column_name FROM table_name WHERE ID = $session_id …但它不起作用。它只选择第一行 编辑我正在使用的代码 <?php $dn = mysql_query("SELECT IDcontact FROM contacts WHERE ID = '".$_SESSION['id']

在MySQL中,如何选择一列的数据,仅针对另一列中同一行的值为
session\u id
的行(我需要所有值,而不仅仅是第一个值)

我试过这个:

SELECT column_name FROM table_name WHERE ID = $session_id
…但它不起作用。它只选择第一行

编辑我正在使用的代码

<?php
     $dn = mysql_query("SELECT IDcontact FROM contacts WHERE ID = '".$_SESSION['id']."'");
     if(mysql_num_rows($dn)>0) 
     {
         $dnn = mysql_fetch_array($dn);
         $req = mysql_query("select TitreEvent, DescriptionEvent, MomentEvent, image_small from users_event where Confidentialite = 'Public' and ID = " . $dnn['IDcontact']);
                while($dnn = mysql_fetch_array($req))
                {
 ?>


例如,联系人/朋友(IDcontact)的值构成数据库«contacts»,其中记录的用户ID为。我想要的是输出所有IDcontact的事件,因为实际上,它只输出最近添加的朋友的事件,witch是。。。«contacts»数据库的第一行。

函数
mysql\u fetch\u array()
只返回查询结果集中的一行。如果要获取查询生成的所有行,必须在循环中调用它:

while ($row = mysql_fetch_array($dn)) {
  // Do stuff with $row...
}
此外,此函数已弃用。您应该使用或来运行查询。有关更多信息,请参阅上的PHP文档


由于您编辑了问题以显示您正在基于第一个查询的结果运行第二个查询,请注意,您可以通过两个表在单个查询中执行
IDcontact
查找和获取
users\u事件
信息:

select TitreEvent, DescriptionEvent, MomentEvent, image_small
from users_event
join contacts
  on contacts.IDcontact = users_event.ID
where contacts.ID = $session_id

最后但并非最不重要的一点是,任何时候在数据库查询中插入变量(如
会话id
)时,都需要注意。如果会话ID来自用户可以控制的参数(例如浏览器cookie),则攻击者可以发送包含SQL代码的恶意会话ID,以在数据库中运行任意查询。为了安全起见,您应该首先创建一个准备好的语句,该语句中有一个占位符,该占位符应该放在参数所在的位置:

... where contacts.ID = ?

然后将
session\u id
变量作为“绑定参数”插入。mysqli和PDO都提供了这样做的方法:并且。

您应该发布一些更相关的信息,比如表的一些数据和所需的结果;假设表中有几行具有所需的会话ID,您应该将它们全部获取……这使我们相信只有一行
ID=$session\u ID
我强烈怀疑1)表中只有一行满足谓词,或者2)您的客户机正在向查询添加限制1,或者3)您的客户端仅从结果集中提取一行。如果您使用的是PDO,则可能调用的是
fetch()
,而不是
fetchAll()