代码之家  ›  专栏  ›  技术社区  ›  JoeCortopassi Dan

如何在PHP中使用mysql where子句?

  •  3
  • JoeCortopassi Dan  · 技术社区  · 16 年前

    似乎无法传递 securityinfo 字段。

    for ($k = 1; $k < $fieldscnt; $k++)
    {
        $selectsecurityname = mysql_query("SELECT `security name` FROM securityinfo WHERE symbol = '$symbol[$k]'") or die(mysql_error());
        $securityname = mysql_fetch_array($selectsecurityname);
        $sym = $symbol[$k]
    
        echo "<td>$securityname[$sym]</td>";
    }
    

    基本上,我想搜索在 symbol 字段,然后返回 安全信息 同一行中的字段。

    4 回复  |  直到 10 年前
        1
  •  0
  •   Veger    16 年前

    除了其他修复示例部分的答案外,还有另一个问题:
    您(尝试)从示例中的表中获取一个值。但当使用它时,您可以作为数组访问它,而它可能只是一个字符串(名称)。

    一个完整的示例,其中包含所有已修复的内容,如下所示:

    for ($k = 1; $k < $fieldscnt; $k++)
    {
        $sym = mysql_real_escape_string($symbol[$k]);
        $selectsecurityname = mysql_query("SELECT `security name` FROM securityinfo WHERE symbol='$sym'") or die(mysql_error());
        $securitynamearray = mysql_fetch_array($selectsecurityname);
        $securityname = $securitynamearray['security name'];
    
        echo "<td>$securityname</td>";
    }
    

    聚苯乙烯 正则变量不需要大括号,所以我省略了它们。

    聚苯硫醚 你可以使用 mysql_fetch_row 而不是 mysql_fetch_array 要防止(最终)您的字段名及其包含的空间出现问题,请执行以下操作:

    $securitynamerow = mysql_fetch_row($selectsecurityname);
    $securityname = $securitynamerow[0];
    
        2
  •  4
  •   Bill Karwin    16 年前

    PHP对如何在带引号的字符串中使用变量有一些限制。所以你不能像现在这样得到数组元素。

    此外,当您将变量插入这样的SQL表达式时,应该确保使用转义。

    $selectsecurityname = mysql_query("
        SELECT `security name` FROM securityinfo 
        WHERE symbol = '" . mysql_real_escape_string($symbol[$k]) . "'") 
      or die(mysql_error());
    

    或者如果这样做更有意义:

    $sym = mysql_real_escape_string($symbol[$k]);
    $selectsecurityname = mysql_query("
        SELECT `security name` FROM securityinfo 
        WHERE symbol = '{$sym}'") 
      or die(mysql_error());
    
        3
  •  2
  •   Sampson    16 年前

    $securityname 不是立即完整数组。如果您想通过键提取值,我们需要循环遍历每个返回行并将其添加到我们自己的数组中:

    while ($row = mysql_fetch_array($selectsecurityname) {
      $myArray[] = $row;
    }
    
    $sym = $symbol[$k];
    echo "<td>".$myArray[$sym]."</td>";
    

    有关更多信息 mysql_fetch_array() ,请参见文档: http://php.net/manual/en/function.mysql-fetch-array.php

        4
  •  0
  •   leepowers    16 年前

    如果要访问字符串中的数组索引,请用大括号将其括起来:

    $a= array(
     'hello'=> 'world',
     'nice'=> 'one',
    );
    
    var_dump("This is the value of \$a['hello']: {$a['hello']}");
    

    并将你的原始陈述重新写为:

    for ($k = 1; $k < $fieldscnt; $k++)
        {
        $selectsecurityname = mysql_query("SELECT `security name` FROM securityinfo WHERE symbol = '{$symbol[$k]}'") or die(mysql_error());
        $securityname = mysql_fetch_array($selectsecurityname);
        $sym = $symbol[$k]
    
        echo "<td>{$securityname[$sym]}</td>";
    

    当然,你需要确保 $symbol[$k] 正确转义以在mysql语句中使用。