I'm trying to upload items stored in a customlistview.
One of these items is a photo.
Everything works fine as long as there is no photo to send.
The php code is lost when the base64 string whith the photo goes with it.
If I just send the photo, it works.
But I need to send the photo along with other fields.
Maybe using multipart, but I couldn't find a way to do that.
PHP ERROR: "SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters"
One of these items is a photo.
Everything works fine as long as there is no photo to send.
The php code is lost when the base64 string whith the photo goes with it.
If I just send the photo, it works.
But I need to send the photo along with other fields.
Maybe using multipart, but I couldn't find a way to do that.
PHP ERROR: "SQLSTATE[HY093]: Invalid parameter number: mixed named and positional parameters"
B4X:
Dim Cursor As Cursor
Cursor = Main.SQL1.ExecQuery($"Select id, usuario, data, Cliente,
Unidade, ciclo, area, subarea, formulario, peca, grupo, pergunta, resposta, foto
FROM inspecao
where coalesce(status, '') <> 'enviado' order by id"$)
Dim data As String = "?"
For i = 0 To Cursor.RowCount - 1
Cursor.Position = i
For y = 0 To Cursor.ColumnCount -1
Dim coluna As String = Cursor.GetColumnName(y)
data = data & coluna & "="
If coluna = "foto" Then
If Cursor.GetString(coluna) <> Null Then
Dim bmp As Bitmap = LoadBitmapResize(File.DirRootExternal, Cursor.GetString(coluna), 100dip, 100dip, True)
Dim ImageBytes() As Byte = func.BitmapToBytes(bmp)
Dim Base64String As String
Base64String = BytesToString(ImageBytes, 0, ImageBytes.Length, "UTF8")
data = data & Base64String & "&"
Else
data = data & "&"
End If
Else
data = data & Cursor.GetString(coluna) & "&"
End If
' Log(data)
Next
Dim jg As HttpJob
jg.Initialize("", Me)
jg.PostString(Main.URLServidor & "/app/receber.php", $"data=${data}"$)
Wait For (jg) JobDone (jg As HttpJob)
If jg.Success Then
Log(jg.GetString)
Else
func.msg("erro 132 " & jg.ErrorMessage)
End If
jg.Release
Next
PHP:
<?php
require '../inc/conexao.php';
$data = json_decode($_POST['data']);
$ix = 0;
$ult = '';
foreach ($data->root as $item) {
// Inicialize um array vazio
$reg = [];
$ret = '';
// Percorra as chaves e valores de $item
foreach ($item as $key => $value) {
if ($key == 'peca' and $value != $ult) {
$ix++;
$ult = $value;
}
// Adicione o valor ao array $reg usando a chave como nome do campo
if ($key != 'id') {
$reg[$key] = $value;
} else {
$ret = $ret . $value . ' ';
} // devolver os ids incluidos para excluir no celular
}
// Insira o registro no banco de dados
inserir($reg);
}
die("$ix inspeções gravadas com sucesso.");
function inserir($data)
{
global $database;
// Prepare a SQL statement
$columns = implode(", ", array_keys($data));
$values = ":" . implode(", :", array_keys($data));
$sql = "INSERT INTO inspecao ($columns) VALUES ($values)";
// Prepare and execute the query
$stmt = $database->prepare($sql);
foreach ($data as $key => $value) {
$stmt->bindValue(":$key", $value);
}
$stmt->execute();
}