PHP和MySQL查询不';行不通

PHP和MySQL查询不';行不通,php,mysql,Php,Mysql,我想在名为“ergasia”的数据库中保存一张图片的名称。我已经创建了表信息,列为name-names-address-title\u photo,我想通过mysql查询在该列中插入图片的名称。图片保存在桌面上的一个文件夹中。以下是我的查询: mysql_connect('localhost', 'root' ,'ana'); $con=mysql_select_db('ergasia'); $surname=$_SESSION['surname']; $name

我想在名为“ergasia”的数据库中保存一张图片的名称。我已经创建了表信息,列为name-names-address-title\u photo,我想通过mysql查询在该列中插入图片的名称。图片保存在桌面上的一个文件夹中。以下是我的查询:

    mysql_connect('localhost', 'root' ,'ana');
    $con=mysql_select_db('ergasia');
    $surname=$_SESSION['surname'];
    $name=$_SESSION['name'];
    $query= "UPDATE information SET title_photo='$_FILES["file"]["name"]' WHERE name='$name' AND lastname='$surname' ";
        if (!mysql_query($query)) {
  die('Error: ' . mysql_error());
}
我得到以下错误:

分析错误:语法错误,意外“”,应为标识符 中的(T_字符串)或变量(T_变量)或数字(T_NUM_字符串) C:\Users\anastasia\Desktop\xampp2\htdocs\ana\forma\save_file.php on 第20行

你知道这个问题吗


提前感谢。

使用以下命令更改您的查询行:

$query= "UPDATE information SET title_photo='".$_FILES["file"]["name"]."' WHERE name='$name' AND lastname='$surname' ";
                                             ^^                       ^^  
您必须将
$\u文件[“文件”][“名称”]
与查询字符串正确连接


Mysql扩展名是。使用或。

如果您有报价问题,在Mysql中正确的做法是:

$query=  sprintf("UPDATE information SET title_photo='%s' 
                  WHERE name='%s' AND lastname='%s'",
            mysql_real_escape_string($_FILES['file']['name']),
            mysql_real_escape_string($name)));
            mysql_real_escape_string($surname)));

…但它是一个不推荐使用的API,因此如果可以,请升级到mysqli。

问题在于字符串查询。请按以下方式更改它

$query= "UPDATE information SET title_photo='".$_FILES["file"]["name"]."' WHERE name='".$name."' AND lastname='".$surname ."'";

发生的情况是,PHP看到您试图在“(
$\u FILES[”file
)之后结束字符串。您必须(结束字符串,添加变量的字符串值,然后继续字符串)不同的值。上面的答案都可以,所以选择一个并花一些时间来理解连接。特别是当您经常使用字符串(如SQL查询)时您可能不止一次使用这种方式。

您的引号有问题。请查看问题中突出显示的颜色语法以查看它。分配
$\u文件[“文件”][“名称”]
到一个变量,并在查询中使用该变量,否则您将不得不处理多个引号类型并转义或连接它们。更好的是,切换到PDO,因为mysql是kaput。希望有人不会上传名为
;drop table information的文件。
也尝试使用mysqli函数。mysql函数的使用不推荐使用ions。@user2820512它现在可以工作,但易受sql注入的攻击,当名称包含quote@user2820512是的,这是正确的。但我认为一开始就足够了。在这种情况下,name和lastname是会话变量,不太可能被篡改。但无论如何,一定要对它们进行清理。