Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.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 在mySQL中搜索数据和交叉引用_Php_Mysql - Fatal编程技术网

Php 在mySQL中搜索数据和交叉引用

Php 在mySQL中搜索数据和交叉引用,php,mysql,Php,Mysql,所以我不知道如何解释我在寻找什么,但我会尽我所能解释 我有一个mySQL数据库,它有以下列名| Name1 | Name2 | Name3,这些是列名。每列下都有一个名字|马克·Abc |吉姆·Abc |金·Abc。好的,这是第1部分,接下来我有另一个表,它有以下列| Name | Weeknum |,所以当我更新这个表时,它会有一些数据,比如| Mark Abc | Week-03 | 因此,我的问题是如何创建一个PHP脚本,该脚本将从Name1下获取值,并在name和weeknum下搜索该名

所以我不知道如何解释我在寻找什么,但我会尽我所能解释

我有一个mySQL数据库,它有以下列名
| Name1 | Name2 | Name3
,这些是列名。每列下都有一个名字
|马克·Abc |吉姆·Abc |金·Abc
。好的,这是第1部分,接下来我有另一个表,它有以下列
| Name | Weeknum |
,所以当我更新这个表时,它会有一些数据,比如
| Mark Abc | Week-03 |

因此,我的问题是如何创建一个PHP脚本,该脚本将从Name1下获取值,并在name和weeknum下搜索该名称,然后返回如下值-
Week-01 Week-02 Completed Week-04


因此,基本上会列出所有52周,如果发现任何与
Name | Weeknum
匹配,则会列出
已完成的
,提前感谢

我从评论中收集到的信息是,您的意思是大致相同的

Update Table2
Set Weeknum='Completed'
Where Name='Mark Abc'

我希望这就是您的意思

如果您可以添加一个名为id的字段,并将其作为第一个表的主字段,然后在第二个表中创建另一个具有相同名称(id)的字段,该字段将是外键,那么就很容易实现您的要求,因为每个名称都有自己的id

    Table 1

    ID    NAME  
    1     Mark Abc
    2     Jim Abc
    3     Kim Abc

    Table 2

    ID  Weeknum
    1   Week-03
    1   complete
    3   Week-09
现在让我们假设我想要执行这个查询:

" SELECT Weeknum FROM TABLE 2 WHERE id = 1; "
这将为我们提供以下输出:

Weeknum
Week-03
complete
发生的事情是Mark Abc的id=1,我们搜索了他的id表2

如果你按照我的建议去做,这个查询就可以了

我将假设您已经链接了数据库,我将只给您一个查询:我将使用键入查询:

$FetchInfo = $conn>prepare("SELECT Weeknum FROM TABLE 2 WHERE id = 1");
$FetchInfo->execute();

While($FI = $FetchInfo->FETCH(PDO::FETCH_ASSOC))
  {
   echo $FI['weeknum']."\n";
  }
现在,如果您不想使用我建议的方法,您可以轻松地执行以下操作:

    $FetchInfo = $conn>prepare("SELECT Weeknum FROM TABLE 2 WHERE NAME = Mark Abc ");
    $FetchInfo->execute();

    While($FI = $FetchInfo->FETCH(PDO::FETCH_ASSOC))
      {
       echo $FI['weeknum']."\n";
      }
两个注意事项:

  • 我使用PDO来键入和执行查询,如果您不知道它是什么,请告诉我,这样我就可以编辑答案并将我的PDO代码替换为Mysqli代码
  • 只是为了将来,当您要键入查询时,请不要执行以下操作:
$FetchInfo=$conn>prepare(“从表2中选择周数,其中id=1”);
$FetchInfo->execute()

这是非常危险的,它可能会被打开进行SQL注入。这是什么?如何解决

是什么

SQL注入是一种代码注入技术,用于攻击 数据驱动的应用程序,其中包含恶意SQL语句 插入到输入字段以执行(例如转储数据库 内容(向攻击者提供)

在本答案中的示例中,如何解决此问题,请执行以下操作:

$FetchInfo = $conn>prepare("SELECT Weeknum FROM TABLE 2 WHERE id = ?");
$FetchInfo->execute(array(1));
也请阅读以下内容:


希望这能对你有所帮助。

从表2中选择周数,其中Name=?
-这就是你的意思吗?我想搜索所有周数并列出所有周数,因此会有
第01周到第52周
以及任何与
名称
匹配的周数,然后会将该周数更改为Completed感谢您提供的信息,我会尽量让我的代码适应你的,thanks@INOH是的,没问题,如果你需要帮助,请告诉我们=