用简单的mySQL查询执行PHP代码时遇到问题

时间:2015-11-28 01:33:10

标签: php mysql

我正在尝试使用WHERE子句执行查询,但看起来我检索的id可能需要从数组转换为其他内容。我是PHP的新手,所以我有点挣扎:

...some previous query here
$sharepoint_id = $data[0];
//returns Array([ID] => a5f415a7-3d4f-11e5-b52f-b82a72d52c35)   

qry = mysql_query("SELECT HostName FROM MSSWireList WHERE id=".$sharepoint_id);     
    $data = array();
    while($rows = mysql_fetch_array($qry))
    {
        $data[] = array(
                    "ID"          => $rows['ID'],
                    "Record"      => $rows['Record'],                                
                    "HostName"    => $rows['HostName']
                    );
    }
    return json_encode($data);  

还尝试了$ sharepoint_id = $ data [0] - > ID; 谢谢

2 个答案:

答案 0 :(得分:2)

  

"返回数组([ID] => a5f415a7-3d4f-11e5-b52f-b82a72d52c35)"

这是一个字符串而不是整数。 <{1}}子句中的变量需要引用。

WHERE

检查错误会发出语法错误信号。

WHERE id='".$sharepoint_id."' "); 添加到or die(mysql_error())

您目前的代码向SQL injection开放。使用mysqli_* with prepared statementsPDOprepared statements

编辑:

您只从查询中选择了mysql_query()列,而不选择其他两个,HostNameID

但是,当遍历循环时,行名称区分大小写。

因此,如果您的行的情况为Record而不是id,那么这在您的循环中就很重要。

  • ID$rows['ID']是两种不同的动物。

旁注:

从我已经问过的评论中拉出来:

$rows['id']如果是您的真实代码,则qry = mysql_query会遗漏$

如果是这样,错误报告会抛出一个未定义的常量qry通知。

答案 1 :(得分:0)

我不会带你去使用旧的mysql驱动程序代替mysqli或PDO,或者没有使用准备好的声明 - 我会留下让别人去做 - 但是

Inventory.java:255: error: no suitable method found for addAll(Set<String>)
       list.addAll(keys);
           ^
method Collection.addAll(Collection<? extends Statistics>) is not applicable
  (argument mismatch; Set<String> cannot be converted to Collection<? extends Statistics>)
method List.addAll(Collection<? extends Statistics>) is not applicable
  (argument mismatch; Set<String> cannot be converted to Collection<? extends Statistics>)
Inventory.java:257: error: incompatible types: Statistics cannot be converted to String
     for(String i : list)
                    ^
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
2 errors

应该做的。