0

我正在创建一个社交网络,并希望用户将他们的个人资料图片上传到 mysql 数据库,并且已经尝试了好几天,但我总是遇到这些错误:

“警告:mysql_query() 期望参数 1 是字符串,第 25 行 /home/gowemtoc/public_html/uploadpic.php 中给出的资源”和“‘字段列表’中的未知列‘数组’”请告诉我有什么问题吗?已经尝试了好几天,找不到什么问题:/这是我的代码

<?php
session_start();
if(isset($_SESSION['myusername'])){
$showusername=$_SESSION['myusername'];}
$showcap = strtolower($showusername);
$mysql_host ="localhost";
$mysql_database="database";
$mysql_user="gowemto_me";
$mysql_password="password";
$usercheck=$_GET['user'];
$link=mysql_connect("$mysql_host","$mysql_user","$mysql_password","mysql_database");
mysql_connect("$mysql_host","$mysql_user","$mysql_password")or die("cannot connect");
mysql_select_db("$mysql_database")or die("cannot select DB");
$result = mysql_query("SELECT * FROM Registered WHERE myusername = '$usercheck'");
if($result === FALSE) {
die(mysql_error());
}
$image = $_FILES['myprofilepicture'];

print_r ($image);

$query=mysql_query("UPDATE Registered set myprofilepicture=$image where    myusername='$showusername'");


if (!$result = mysql_query($link, $query)){die('Error occured' .mysql_error($link));}

$id = (int) mysqli_insert_id($link);
exit;

?>
4

2 回答 2

0

你不应该有这个:

mysql_query("SELECT * FROM Registered WHERE myusername = '{$usercheck}'")
// missing curly brackets

代替

mysql_query("SELECT * FROM Registered WHERE myusername = '$usercheck'")?

其他mysql_query()格式也是如此。

于 2013-07-25T01:12:29.510 回答
0

这里有一个错误列表。

 $image = $_FILES['myprofilepicture'];

这只会为您的 $image 变量分配一个数组。它不会按预期为您提供文件名。你['tmp_name']至少需要,但应该先把它移到别处。见http://www.php.net/manual/en/features.file-upload.post-method.php

您的查询还缺少插值字符串周围的引号:

 $query=mysql_query("UPDATE Registered set myprofilepicture=$image where    myusername='$showusername'");

这样你的查询将成为set myprofilepicture=Array最好的。但是你需要myprofilepicture='/tmp/Whatever'.

最后,您调用了 mysql_query() 两次。要么只将 SQL 命令分配给 $query 变量:

 $query = "UPDATE Registered ...";

或删除第二mysql_queryif

然后你不能混进去mysqli_insert_id,当你以前使用 mysql_ 函数时。

mysql_real_escape_string()如果您想继续使用这个过时的数据库接口,请不要忘记应用所有插值字符串。

于 2013-07-25T01:14:44.660 回答