使用xamarin.forms中的php脚本在mysql数据库中保存图像
我正在尝试使用PHPWebservice和json将xamarin.Forms代码中的图像保存到mysql数据库中 运行php脚本时出现以下错误使用xamarin.forms中的php脚本在mysql数据库中保存图像,php,android,mysql,mysqli,xamarin.forms,Php,Android,Mysql,Mysqli,Xamarin.forms,我正在尝试使用PHPWebservice和json将xamarin.Forms代码中的图像保存到mysql数据库中 运行php脚本时出现以下错误 <?php $conn = mysqli_connect('localhost', 'username', 'password', 'dbname'); if($_SERVER['REQUEST_METHOD'] == "POST"){ $id = isset($_POST['id']) ? $_POST['id'] : "";
<?php
$conn = mysqli_connect('localhost', 'username', 'password', 'dbname');
if($_SERVER['REQUEST_METHOD'] == "POST"){
$id = isset($_POST['id']) ? $_POST['id'] : "";
$image = isset($_POST['image']) ? $_POST['image'] : "";
if(!$image==null)
{
$sql = "UPDATE tbl_image SET Image = ? WHERE id=$id";
$stmt = mysqli_prepare($con, $sql);
mysqli_stmt_bind_param($stmt, "s", $image);
mysqli_stmt_execute($stmt);
$check = mysqli_stmt_affected_rows($stmt);
if($check==1)
$json=array("status" => 1, "msg" => "Image updates successfully");
else
$json=array("status" => 0, "msg" => "error happend while updating image to server.");
}
else
$json=array("status" => 0, "msg" => "Image not uploaded");
}else{
$json = array("status" => 0, "msg" => "Request Not Accepted.");
}
@mysqli_close($conn);
/* Output header */
header('Content-type: application/json');
echo json_encode($json);
?>
var bytes = default(byte[]);
using (var StreamReader = new StreamReader(imgFile))
{
using (var mstream = new MemoryStream())
{
StreamReader.BaseStream.CopyTo(mstream);
bytes = mstream.ToArray();
}
}
string imgstr = Convert.ToBase64String(bytes);
using (var client = new HttpClient())
{
var url = "url";
var content = new FormUrlEncodedContent(new[] {
new KeyValuePair<string,string>("id", id.ToString()),
new KeyValuePair<string, string>("image", imgstr)
});
var resp = await client.PostAsync(new Uri(url), content);
if (!resp.IsSuccessStatusCode)
General.GSErr("Nothing retrieved from server.");
else
{
var result = JsonConvert.DeserializeObject<General_Response>(resp.Content.ReadAsStringAsync().Result);
if (result.status == 0)
General.GSErr(result.msg);
}
}
**
[20-Dec-2016 00:17:08]PHP警告:mysqli_prepare期望参数1为mysqli,在第13行的/home7/gsakolac/public_html/BBA/prod_update_image.PHP中给出空值
[20-Dec-2016 00:17:08]PHP警告:mysqli_stmt_bind_param希望参数1为mysqli_stmt,在第14行的/home7/gsakolac/public_html/BBA/prod_update_image.PHP中给出空值
[20-Dec-2016 00:17:08]PHP警告:mysqli_stmt_execute希望参数1为mysqli_stmt,在第15行的/home7/gsakolac/public_html/BBA/prod_update_image.PHP中给出空值
[20-Dec-2016 00:17:08]PHP警告:mysqli_stmt_受影响的_行希望参数1为mysqli_stmt,在第17行的/home7/gsakolac/public_html/BBA/prod_update_image.PHP中给出空值
**
我的php脚本
<?php
$conn = mysqli_connect('localhost', 'username', 'password', 'dbname');
if($_SERVER['REQUEST_METHOD'] == "POST"){
$id = isset($_POST['id']) ? $_POST['id'] : "";
$image = isset($_POST['image']) ? $_POST['image'] : "";
if(!$image==null)
{
$sql = "UPDATE tbl_image SET Image = ? WHERE id=$id";
$stmt = mysqli_prepare($con, $sql);
mysqli_stmt_bind_param($stmt, "s", $image);
mysqli_stmt_execute($stmt);
$check = mysqli_stmt_affected_rows($stmt);
if($check==1)
$json=array("status" => 1, "msg" => "Image updates successfully");
else
$json=array("status" => 0, "msg" => "error happend while updating image to server.");
}
else
$json=array("status" => 0, "msg" => "Image not uploaded");
}else{
$json = array("status" => 0, "msg" => "Request Not Accepted.");
}
@mysqli_close($conn);
/* Output header */
header('Content-type: application/json');
echo json_encode($json);
?>
var bytes = default(byte[]);
using (var StreamReader = new StreamReader(imgFile))
{
using (var mstream = new MemoryStream())
{
StreamReader.BaseStream.CopyTo(mstream);
bytes = mstream.ToArray();
}
}
string imgstr = Convert.ToBase64String(bytes);
using (var client = new HttpClient())
{
var url = "url";
var content = new FormUrlEncodedContent(new[] {
new KeyValuePair<string,string>("id", id.ToString()),
new KeyValuePair<string, string>("image", imgstr)
});
var resp = await client.PostAsync(new Uri(url), content);
if (!resp.IsSuccessStatusCode)
General.GSErr("Nothing retrieved from server.");
else
{
var result = JsonConvert.DeserializeObject<General_Response>(resp.Content.ReadAsStringAsync().Result);
if (result.status == 0)
General.GSErr(result.msg);
}
}
我的xamarin.forms代码,用于将图像文件imgFile Name string转换为base64string并调用php脚本
<?php
$conn = mysqli_connect('localhost', 'username', 'password', 'dbname');
if($_SERVER['REQUEST_METHOD'] == "POST"){
$id = isset($_POST['id']) ? $_POST['id'] : "";
$image = isset($_POST['image']) ? $_POST['image'] : "";
if(!$image==null)
{
$sql = "UPDATE tbl_image SET Image = ? WHERE id=$id";
$stmt = mysqli_prepare($con, $sql);
mysqli_stmt_bind_param($stmt, "s", $image);
mysqli_stmt_execute($stmt);
$check = mysqli_stmt_affected_rows($stmt);
if($check==1)
$json=array("status" => 1, "msg" => "Image updates successfully");
else
$json=array("status" => 0, "msg" => "error happend while updating image to server.");
}
else
$json=array("status" => 0, "msg" => "Image not uploaded");
}else{
$json = array("status" => 0, "msg" => "Request Not Accepted.");
}
@mysqli_close($conn);
/* Output header */
header('Content-type: application/json');
echo json_encode($json);
?>
var bytes = default(byte[]);
using (var StreamReader = new StreamReader(imgFile))
{
using (var mstream = new MemoryStream())
{
StreamReader.BaseStream.CopyTo(mstream);
bytes = mstream.ToArray();
}
}
string imgstr = Convert.ToBase64String(bytes);
using (var client = new HttpClient())
{
var url = "url";
var content = new FormUrlEncodedContent(new[] {
new KeyValuePair<string,string>("id", id.ToString()),
new KeyValuePair<string, string>("image", imgstr)
});
var resp = await client.PostAsync(new Uri(url), content);
if (!resp.IsSuccessStatusCode)
General.GSErr("Nothing retrieved from server.");
else
{
var result = JsonConvert.DeserializeObject<General_Response>(resp.Content.ReadAsStringAsync().Result);
if (result.status == 0)
General.GSErr(result.msg);
}
}
我是php编程新手,请帮助我
Amit Saraf因为您的第一个参数是$con,应该是$conn 不要将变量直接绑定到查询。您已经在使用准备好的语句,请使用它
$sql = "UPDATE tbl_image SET Image = ? WHERE id = ?";
$stmt = mysqli_prepare($conn, $sql);
mysqli_stmt_bind_param($stmt, "si", $image, $id);
应用程序的错误报告级别不足。您需要重新阅读有关mysqli prepared StatementHanks的书。愚蠢的错误。感谢您指出。使用MySQL Workbench查看数据时,查看器不会显示图像,而只显示文本。有什么问题吗?我正在尝试将图像文件保存到mysql BLOBfield@YourCommonSense-行!谢谢你指出这一点!