所以我在php上使用一个小脚本进行网页管理,我可以进行项目注册,所以我获取了所有参数并将它们发送到脚本中以构建数据库(mysql)的INSERT。这是我的代码段:
//Getting the params
$title = $_POST["title"];
$date = $_POST["date"];
$hour = $_POST["hour"];
$description = $_POST["description"];
$link = $_POST["link"];
$speaker = $_POST["speaker"];
$site = $_POST["site"];
$file = $_POST["file"];
//Link and File are optional, so I'll be using NULL instead if they're empty
$link = !empty($link) ? ("'".$link."'") : ("'". NULL ."'");
$file = !empty($file) ? ("'".$file."'") : ("'". NULL ."'");
//Now I'm ready to build the query
$query = "INSERT INTO ".$type;
$query = $query . "(title,data,hour,description,link,speaker,site,file)";
$query = $query . "VALUES (";
$query = $query . "'" .$title."'";
$query = $query . ",'".$date."'";
$query = $query . ",'".$hour."'";
$query = $query . ",'".$description."'";
$query = $query . ",".$link;
$query = $query . ",'".$speaker."'";
$query = $query . ",'".$site."'";
$query = $query . ",".$file.")";
//Finally, I'll be sending the INSERT as a query using:
$result = mysql_query($query);
if(!$result)
echo "SQL Error"
因此,我总是进入错误语句。我在同一网页上还有其他脚本插入其他脚本,它们运行良好,这个模仿它们。我已经检查过:
- mysql_connect() 和 mysql_select_db() 都可以
- 我使用的数据库用户有授权来执行插入
- 数据库连接(使用 SELECT 查询进行检查)
任何提示将不胜感激。
[已解决] 字符串未转义,因此引号中断了查询。因此,如果您仍然发出这种麻烦并使用已弃用的 mysql _ API,您可能还需要 mysql_escape_string 方法(检查插入 MySQL 时转义 PHP 中的单引号)。
使用这些行。
$link = !empty($link) ? $link : NULL;
$file = !empty($file) ? $file :NULL ;
在PHP
null 是NULL
没有引号也不要在$link和$file中使用额外的 "。
在运行之前query
请尝试打印它并在PhpMyadmin
中运行
您在连接方面遇到问题。尝试用这个更改你的代码行:
//Link and File are optional, so I'll be using NULL instead if they're empty
$link = !empty($link) ? ($link) : (NULL);
$file = !empty($file) ? ($file) : (NULL);
//Now I'm ready to build the query
$query = "INSERT INTO $type (title,data,hour,description,link,speaker,site,file) VALUES ('" .$title."','".$date."'
,'".$hour."','".$description."','".$link."','".$speaker."','".$site."','".$file."')";
此外,NULL 永远不会作为字符串传递。否则,它将被视为 改为字符串。