我有一个应该查找条目的查询。如果它不在数据库中,则输入数据。否则它返回数据,他们可以更新任何字段。如果有一个条目,它将只有一个。如果条目在表中,这非常有用。但我已经尝试检查空行,执行row_count等,但似乎没有用。现在我只是在代码中有这个(清理以删除公司表信息):
$query1 = " SELECT Number, Notes, Qty1, Qty2 FROM test.notes ";
$query1 .= " WHERE Number = '$searchnumber' ";
$result1 = $conn1->query($query1);
$conn1 = null;
if($result1==null)
{
echo "Result is null</p>\n";
return 0;
}
else
{
echo "Result is not null</p>\n";
return $result1;
}
如果我拿出if检查我似乎回来的是,如果发现它正确返回值。如果没有找到,结果似乎是查询字符串本身。检查不起作用。可能是因为如果找不到它,它会返回查询字符串。
我知道这很简单,但还没找到。
答案 0 :(得分:0)
// if available in database
$query="SELECT Number, Notes, Qty1, Qty2 FROM test.notes WHERE Number='".$searchnumber."'";
$qnt = $conn1->query($query);
$coun = count($qnt->fetchAll());
if($coun > 0){
// available
echo "Result is available</p>\n";
}else{
//not available
echo "Result is not available</p>\n";
}
我认为你需要这样的东西。
如果这不能正常工作,请尝试另一种方法
$queryi = $conn1->prepare("SELECT Number, Notes, Qty1, Qty2 FROM test.notes WHERE Number='".$searchnumber."' ");
$queryi->execute();
$qn= $queryi->fetchAll(PDO::FETCH_ASSOC);
foreach ($qn as $row => $data) {
$in_use = $data['Number'];
//echo $in_use ;
}
// evaluate
if($in_use == NULL){
//not avilable
}else{
// available
}
答案 1 :(得分:0)
我建议做这样的事情:
建立您的查询
$query1 = " SELECT Number, Notes, Qty1, Qty2 FROM test.notes ";
$query1 .= " WHERE Number = '$searchnumber' ";
查看是否有查询结果,没有错误
if ($res = $conn1->query($sql)) {
/* Check the number of rows that match the SELECT statement */
if ($res->fetchColumn() > 0) {
/* Issue the real SELECT statement and work with the results */
$sql = "SELECT name FROM fruit WHERE calories > 100";
foreach ($conn->query($sql) as $row) {
print "Name: " . $row['NAME'] . "\n";
}
}
/* No rows matched -- do something else */
else {
print "No rows matched the query.";
}
}
答案 2 :(得分:0)
经过一些试验和错误后我才开始工作:
$result1 = $conn1->query($query1);
$count = $result1->fetchColumn();
if($count == "")
{
// echo "Result is null</p>\n";
return "0";
}
else
{
// echo "Result is not null</p>\n";
$result1 = $conn1->query($query1);
return $result1;
}
我必须将设置更改为包括:
$conn1->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, TRUE);
可能不是一个干净的方式,但它现在有效。感谢您的帮助。