我遇到INSERT查询问题。
问题在于:
昨天我用这个代码上传数据,工作正常。今天,当我点击表单上的提交时,它只显示一个空白页面。没有错误,只是空白。错误日志中没有任何内容。所有SELECT查询都正常工作,因此SELECT Count(id)查询仍然有效。
以下是我的尝试:
该函数获取物种,家族和属的列表,然后将它们添加到数据库中。 这是代码(非santised版本 - 两者都在昨天工作):
error_reporting(E_ALL);
ini_set('display_errors', '1');
function submit($family, $genus, $species){
//require statement
require 'databaseConnect.php';
//get num of species
if(!($result = mysql_query("SELECT Count(id) as num FROM speciesList", $connection))) mysql_error();
$nums = mysql_fetch_row($result);
$num=$nums[0];
//parse species
$holder="";
$array = Array();
while(strlen($species)!=0){
if($species[0]==';'){
$array[] = $holder;
$holder="";
}else{
$holder = $holder . $species[0];
}
$species=substr($species, 1);
}
foreach($array as $v){
$num++;
if(!(mysql_query("INSERT INTO speciesList VALUES($num, '$family', '$genus', '.$v')", $connection))){
mysql_error();
}else{
print "success ";
}
}
mysql_close($connection);
}
非常感谢你,这个问题对我来说相当神秘! Em
答案 0 :(得分:1)
您永远不会曾希望使用带参数的字符串替换来构建SQL语句,因为它使您容易受到SQL注入攻击。而是绑定您的参数。
您的代码未返回错误,因为您调用了mysql_error()
并忽略了返回值。它返回错误字符串,因此您希望代码更像这样:
if(!(mysql_query("INSERT INTO speciesList VALUES($num, '$family', '$genus', '.$v')", $connection))){
print_r( mysql_error() );
}else{
print "success ";
}
如果您在看到错误后需要帮助,请在此处发布。
答案 1 :(得分:0)
if(!(mysql_query("INSERT INTO speciesList VALUES($num, '$family', '$genus', '.$v')", $connection))){
echo mysql_error();
}else{
可能还有其他问题,但mysql_error()函数返回一个字符串。您的脚本需要采取一些操作来显示字符串。
我发现更好的方法是分别构造变量,以便显示它们。而且我不确定你在$ v之前想要那个点。看看这对你有意义。
foreach($array as $v)
{
$num++;
$sql = "INSERT INTO speciesList VALUES($num, '$family', '$genus', '$v')";
$res = mysql_query($sql);
if (!$res) die("FAIL: $sql BECAUSE: " . mysql_error());
echo "<br/>SUCCESS: $sql";
}