我正在尝试使用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; 谢谢
答案 0 :(得分:2)
"返回数组([ID] => a5f415a7-3d4f-11e5-b52f-b82a72d52c35)"
这是一个字符串而不是整数。 <{1}}子句中的变量需要引用。
WHERE
检查错误会发出语法错误信号。
将WHERE id='".$sharepoint_id."' ");
添加到or die(mysql_error())
。
您目前的代码向SQL injection开放。使用mysqli_*
with prepared statements或PDO与prepared statements。
编辑:
您只从查询中选择了mysql_query()
列,而不选择其他两个,HostName
和ID
。
但是,当遍历循环时,行名称区分大小写。
因此,如果您的行的情况为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
应该做的。