У меня есть запрос, который должен искать запись. Если он не находится в базе данных, введите данные. В противном случае он возвращает данные и может обновлять любые поля. Если есть запись, она будет только одна. Это отлично работает, если запись находится в таблице. Но я попытался проверить пустые строки, сделать 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;
}
Если я выберу, если проверить, что я, кажется, вернусь, это если он вернет правильные значения. Если он не найден, результат, похоже, является самой строкой запроса. Проверка не работает. Вероятно, потому что он возвращает строку запроса, если она не найдена.
Я знаю, что это просто, но просто не нашел.
После некоторых проб и ошибок я получил это для работы:
$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);
Наверное, это не чистый способ, но сейчас он работает. Спасибо за помощь.
Я предлагаю сделать что-то вроде этого:
Установите запрос
$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.";
}
}
// 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
}
fetchAll