Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP插入到不插入任何数据中_Php_Mysql_Mysqli_Sql Insert - Fatal编程技术网

PHP插入到不插入任何数据中

PHP插入到不插入任何数据中,php,mysql,mysqli,sql-insert,Php,Mysql,Mysqli,Sql Insert,我有一个php语句,可以在mySQL数据库中插入一些信息。这个连接工作得很好。我遇到的问题是,我得到了以下错误代码: 错误:在任务中插入“taskName”、“requestedBy”、“details”, “dateAdded”值“test1”、“test3”、“test3”,2015-01-05“您有 SQL语法中的错误;检查与您的产品相对应的手册 MySQL服务器版本,以便在taskName'附近使用正确的语法, “requestedBy”、“details”、“dateAdded”值“t

我有一个php语句,可以在mySQL数据库中插入一些信息。这个连接工作得很好。我遇到的问题是,我得到了以下错误代码:

错误:在任务中插入“taskName”、“requestedBy”、“details”, “dateAdded”值“test1”、“test3”、“test3”,2015-01-05“您有 SQL语法中的错误;检查与您的产品相对应的手册 MySQL服务器版本,以便在taskName'附近使用正确的语法, “requestedBy”、“details”、“dateAdded”值“test1”、“test3”、“te” 在1号线

功能如下

if(isset($_POST["submitTask"])){
    insertTask();
};

function insertTask(){
    $servername = "localhost";
    $username = "tasktrack";
    $password = "";
    $dbname = "tasktrack";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$taskname = $_POST["task_name"];
$requestedby= $_POST["requested_by"];
$details = $_POST["details"];
$datenow = date("Y-m-d");

$sql = "INSERT INTO tasks ('taskName', 'requestedBy', 'details', 'dateAdded') VALUES ('$taskname' ,'$requestedby' ,'$details', $datenow')";

if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);
};
现在我被卡住了,想不出更多的东西来尝试

$sql = "INSERT INTO tasks (taskName, requestedBy, details, dateAdded) VALUES ('$taskname' ,'$requestedby' ,'$details', '$datenow')";

// Removed quotes from columns, and added missing quote on datenow

请注意,这种向数据库中添加值的技术非常不安全,并且容易受到SQL注入攻击。

您不能将字段名括在撇号或引号中。要么用反引号括起来,要么原封不动地使用它们

$sql = "INSERT INTO tasks (`taskName`, `requestedBy`, `details`, `dateAdded`) VALUES ('$taskname' ,'$requestedby' ,'$details', '$datenow')";


但是,如果字段名是MySQL关键字,或者它包含空格、引号、逗号、括号、运算符或其他在SQL中具有特殊含义的字符,则必须将它们括在反引号中,否则MySQL将在特殊字符处报告语法错误。

您的三次尝试都是错误的。第一,只要删除列的引号,你就会高兴得跳起来;-第一个中缺少$datenow'的引号。如果列和表名有反勾号,则需要反勾号。。。和值的直接单引号或双引号。您应该转义您的值或使用一个准备好的语句来避免sql注入。单引号或双引号用于字符串值。您的代码易受SQL注入攻击;您应该继续阅读。同时根据您的代码示例,您目前缺少一个“大约$datenow”。我看到$datenow'没有询问这个漏洞,因为它只会出现在我的笔记本电脑上,因为它是一个个人系统。我以前也试过这种方法,当每件事都在30秒内发生时,重复的事情就会发生。@Kieranmv95这并不重要;每当你插入一个包含“字符”的文本时,你就会中断你自己的查询。我已经知道这些事情,并且可能会在以后的某个日期修复,因为我在半小时前才开始修复XD,不管怎样修复都有效谢谢,将在8中接受minutes@Blake好吧,结果还好:-
$sql = "INSERT INTO tasks (`taskName`, `requestedBy`, `details`, `dateAdded`) VALUES ('$taskname' ,'$requestedby' ,'$details', '$datenow')";
$sql = "INSERT INTO tasks (taskName, requestedBy, details, dateAdded) VALUES ('$taskname' ,'$requestedby' ,'$details', '$datenow')";