给定特定参数时,如何修复未运行的 SQL 查询? [复制]
Posted
技术标签:
【中文标题】给定特定参数时,如何修复未运行的 SQL 查询? [复制]【英文标题】:How to fix an SQL query not running when specific parameters are given? [duplicate] 【发布时间】:2019-12-05 05:28:50 【问题描述】:我正在创建一个论坛,允许用户通过 html 表单上传图像,然后使用 php 将其保存到特定文件夹。然后我打算使用 SQL 查询向表中添加一行并包含所选图像的文件路径,以便我可以将其显示在另一个页面上。
我对 PHP 和 mysql 还很陌生,因此我一直在使用 Google 来获得很多答案。但是,我无法找到遇到此问题的其他人,并且在我的论坛中没有找到遇到类似问题的任何其他 SQL 查询。另外,我的代码没有收到任何错误。
<?php
include("../../../dbconn.php");
$cid = 1;
$scid = 1;
$topic_title = $_POST['topic-title'];
$content = $_POST['topic-content'];
$target_dir = "Saved Images/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"]))
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false)
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
else
echo "File is not an image.";
$uploadOk = 0;
// Check if file already exists
if (file_exists($target_file))
echo "Sorry, file already exists.";
$uploadOk = 0;
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000)
echo "Sorry, your file is too large.";
$uploadOk = 0;
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" )
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0)
echo "Sorry, your file was not uploaded.</br>";
// if everything is ok, try to upload file
else
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file))
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
mysqli_query($con, "INSERT INTO Artists_Looking_For_Writers (`category_id`, `subcategory_id`, `title`, `content`, `date_posted`, `imgName1`) VALUES ('".$cid."', '".$scid."', '".$topic_title."', '".$content."', NOW(), '".$_FILES['fileToUpload']['name']."');");
else
echo "Sorry, there was an error uploading your file.";
?>
这应该在我的表中创建一行,其中包含 category id、subcategory id、title、content、发布日期和我的图片名称。相反,不会向表中添加任何内容。仅当我在 SQL 查询中包含 imgName1
列时才会发生这种情况。如果我删除它和获取上传文件名称的命令,那么它会完美运行。
【问题讨论】:
另外,你真的应该考虑使用准备好的语句,这段代码很容易受到 SQL 注入攻击。 使用准备好的语句也意味着您不必担心引用此类问题。 真正对您有帮助的一件事是进行设置,以便您可以看到 MySQL 错误。 ***.com/questions/22662488/… @Jonnix 我没有看到我的反引号、双引号和单引号在哪里搞砸了。你能指出哪里吗? @Don'tPanic 我在其中添加了该行,它给了我这个错误:未捕获的 mysqli_sql_exception:您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在 /Applications/XAMPP/xamppfiles/htdocs/dev/cc-Forum/topics/1/2/ 中的第 1 行的 ''my Image'')' 附近使用正确的语法submit_topic.php:47 堆栈跟踪:#0 /Applications/XAMPP/xamppfiles/htdocs/dev/cc-Forum/topics/1/2/submit_topic.php(47): mysqli_query(Object(mysqli), 'INSERT INTO Art. ..') #1 main 在第 47 行的 /Applications/XAMPP/xamppfiles/htdocs/dev/cc-Forum/topics/1/2/submit_topic.php 中抛出 【参考方案1】:我解决了这个问题。问题在于我使用了单引号和双引号,然后我将查询移到单独的 if 语句中,从而解决了问题。
【讨论】:
以上是关于给定特定参数时,如何修复未运行的 SQL 查询? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如果 where 子句已经修复,如何加快 spark sql 过滤器查询?
如何在 BigQuery UI 中安排查询时修复“请求包含无效参数”错误