Gerando consulta para API

Criei um método onde faço uma consulta na base gerando o json e tudo funciona perfeitamente (seguindo tutorial da Camila):

$dados = json_decode($dados, true);
$date_vis = sc_sql_injection($dados["dt_visita"]);
$str_tera = sc_sql_injection($dados["tera"]);

$sql = "SELECT id_clientes, data_visita_clientes, terapeuta_clientes, status_clientes FROM clientes WHERE data_visita_clientes = ".$date_vis." AND terapeuta_clientes = ".$str_tera;
sc_select(rs, $sql);
if({rs} !== false) {
	while(!$rs->EOF) {
		$data["clientes"][] = array(
			"id_cli" => $rs->fields["id_clientes"],
			"dt_vis" => $rs->fields["data_visita_clientes"],
			"status" => $rs->fields["status_clientes"],
			"terapeuta" => $rs->fields["terapeuta_clientes"]			
		);		
		$rs->MoveNext();
	}
	$rs->Close();	
	return json_encode($data);
}

Única dúvida que já tentei todas as possibilidades (menos a correta, é claro), em como trazer na consulta, clientes de um determinado Status:

$sql = "SELECT id_clientes, data_visita_clientes, terapeuta_clientes, status_clientes FROM clientes WHERE data_visita_clientes = “.$date_vis.” AND terapeuta_clientes = “.$str_tera.” AND status_clientes = " ‘ANDAMENTO’;

No final tem algo errado nesta sintaxe mas não consigo descobrir de forma alguma, tentei de diversas formas e não vai. Se alguém puder me ajudar, agradeço muito. Seria uma constante, tentei declarar como constante(define) mas não foi tbém.

Tente assim:

$sql = "SELECT id_clientes, data_visita_clientes, terapeuta_clientes, status_clientes 
FROM clientes 
WHERE data_visita_clientes = '“.$date_vis.”' 
AND terapeuta_clientes = '“.$str_tera.”' 
AND status_clientes = ‘ANDAMENTO’";

Kleyber, obrigado por se prontificar a me ajudar.
Segui sua sugestão, com pequenos ajustes na pontuação de aspas simples e duplas, o MySql não reconheceu exatamente como fez, porém, mesmo assim o resultado não vem em json…

No phpMyAdmin tudo funciona: veja imagem

Mas no Postman a resposta só vem, quando uso o Status como Variável, quando não deveria, veja imagem:

O problema é que existem outros Status e que não deveriam ficar disponíveis ao usuário: como Retorno, Perdida, etc. Preciso que apenas o ANDAMENTO seja disponibilizado.

Veja abaixo a imagem do Postman seguindo sua idéia:

$dados = json_decode($dados, true);
$date_vis = sc_sql_injection($dados["dt_visita"]);
$str_tera = sc_sql_injection($dados["tera"]);
//$str_status = sc_sql_injection($dados["stat"]);

$sql = "SELECT id_clientes, data_visita_clientes, terapeuta_clientes, status_clientes 
FROM clientes 
WHERE data_visita_clientes = '".$date_vis."' 
AND terapeuta_clientes = '".$str_tera."' 
AND status_clientes = 'ANDAMENTO'";

//$sql = "SELECT id_clientes, data_visita_clientes, terapeuta_clientes, status_clientes FROM clientes WHERE data_visita_clientes = ".$date_vis." AND terapeuta_clientes = ".$str_tera." AND status_clientes = ".$str_status;


sc_select(rs, $sql);
if({rs} !== false) {
	while(!$rs->EOF) {
		
		$data["clientes"][] = array(
			"id_cli" => $rs->fields["id_clientes"],
			"dt_vis" => $rs->fields["data_visita_clientes"],
			"status" => $rs->fields["status_clientes"],
			"terapeuta" => $rs->fields["terapeuta_clientes"]			
		);
			
		$rs->MoveNext();
	}
	$rs->Close();
	
	return json_encode($data);
}

Status 200 OK - porém, sem os dados:
Não consigo entender:

Cheque se a variável $date_vis está no formato AAAA-MM-DD e se a variável $str_tera está trazendo o conteúdo correto. Dê um echo nessas variáveis e veja como estão.

Com echo:

$dados = json_decode($dados, true);
$date_vis = sc_sql_injection($dados["dt_visita"]);
$str_tera = sc_sql_injection($dados["tera"]);
//$str_status = sc_sql_injection($dados["stat"]);

echo "data: ".$date_vis;
echo "terapeuta: ".$str_tera;


$sql = "SELECT id_clientes, data_visita_clientes, terapeuta_clientes, status_clientes 
FROM clientes 
WHERE data_visita_clientes = '".$date_vis."' 
AND terapeuta_clientes = '".$str_tera."' 
AND status_clientes = 'ANDAMENTO'";

//$sql = "SELECT id_clientes, data_visita_clientes, terapeuta_clientes, status_clientes FROM clientes WHERE data_visita_clientes = ".$date_vis." AND terapeuta_clientes = ".$str_tera." AND status_clientes = ".$str_status;


sc_select(rs, $sql);
if({rs} !== false) {
	while(!$rs->EOF) {
		
		$data["clientes"][] = array(
			"id_cli" => $rs->fields["id_clientes"],
			"dt_vis" => $rs->fields["data_visita_clientes"],
			"status" => $rs->fields["status_clientes"],
			"terapeuta" => $rs->fields["terapeuta_clientes"]			
		);
			
		$rs->MoveNext();
	}
	$rs->Close();
	
	return json_encode($data);
}

Postman:

Teste no Scriptcase os echos das variáveis para veres o que estão retornando, mas dentro da aplicação SC.

Kleyber, o echo que dou nestas variáveis trazem exatamente o que mostrei no post anterior, pois são variáveis que recebem parâmetros que eu mesmo envio através do body no Postman.

Mas seguindo seu raciocínio do problema ser na tipagem de dados, fiz outro teste, chamei no SELECT somente campos com string e tudo funcionou, porém, o problema continua, não funciona com constantes, apenas com variáveis.

Sendo assim, não acredito que o problema esteja na sintaxe do SQL ou no tipo de dados, pois já tentei todas as possibilidades, inclusive com sua lógica e ajuda.

Acredito que seja ao passar os dados para a variável que é criada no início:
$dados = json_decode($dados, true);

enfim… ainda sem solução