2016-02-19 91 views
1

我有以下代码应该从前一页收集填充值并将它们插入到MySQLi数据库中。这不起作用,我只收到一个空白页面,没有任何消息。我无法弄清楚我做错了什么。代码不会插入到数据库

<?php 
 
ini_set('display_errors',1); 
 
error_reporting(E_ALL); 
 

 
if(mysqli_connect_errno()) 
 
{ 
 
    echo mysqli_connect_error(); 
 
} 
 

 
$company_name = $_POST['company_name']; 
 
$description = $_POST['description']; 
 
$welcome_text = $_POST['welcome_text']; 
 
$thanks_message = $_POST['thanks_message']; 
 
$image = addslashes (file_get_contents($_FILES['image']['tmp_name'])); 
 
$logo = getimagesize($_FILES['image']['tmp_name']); 
 

 
$image_type = $logo['mime']; 
 

 
$q = "INSERT INTO project VALUES('','$company_name','$description','$image','$image_type','$welcome_text','$thanks_message')"; 
 

 
$r = mysqli_query($mysqli,$q); 
 
if($r) 
 
{ 
 
    echo "<h1>Projektet är skapat!</h1><br> 
 
     Tryck på knappen nedan för att ta dig till Dashboard.<br><br> 
 
     <a href='dashboardadmin.php'><button id='projectbutton'>Dashboard</button></a>"; 
 
} 
 
else 
 
{ 
 
    echo mysqli_errno($mysqli) . ": " . mysqli_error($mysqli) . "\n"; 
 
} 
 
?>

+1

错误????????? PLZ? – devpro

+2

你至少需要“清理”你的输入;参数化查询会更好。 – Uueerdo

+3

[您的脚本存在SQL注入攻击的风险。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)了解[prepared](http: //en.wikipedia.org/wiki/Prepared_statement)[MySQLi]的声明(http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。 –

回答

3

INSERT的正确的语法是:

INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...); 

请先尝试你的价值才进入列名。还请检查您的$_POST值,是否有$_FILES['image']可用并确认您的mysqli连接。

编辑:

是第一值(空单),你的主键?如果是这样,你可以在代码中省略那一点,然后再试一次吗? (假设PID为整数,自动递增值。)

INSERT INTO project (project_name, description, image, image_type, welcome_text, thanks_message) VALUES('$company_name','$description','$image','$image_type','$welcome_text',‌​'$thanks_message') 

不知怎的,我不认为这将是Azure的具体问题,根据您的评论。

你能看到日志等任何错误吗?也可以在运行之前尝试回显查询,并检查是否直接在您的phpmyadmin等上运行它,以查看它是否可行。

也请尝试使用echo mysqli_errno($mysqli) . ": " . mysqli_error($mysqli) . "\n";if($r){..} else { //here }以查看是否出现错误。

最新:

$q = "INSERT INTO project (project_name, description, image, image_type, welcome_text, thanks_message) VALUES('".$company_name."','".$description."','".$image."','".$image_type."','".$welcome_text."','".$thanks_message."')"; 
+2

字段列表是可选的(至少在MySQL中);但我也是他们的强力支持者。 – Uueerdo

+0

@Ekin我现在把列名称,但它不起作用。我有一个很好的连接,我已经测试没有图像代码,但它仍然没有工作。我正在使用Microsoft Azure服务器,但它不起作用,但相同的代码在本地工作,这很奇怪。 – Max

+0

@Max是第一个值(空一)你的主键?如果是这样,你可以在代码中省略那一点,然后再试一次吗?不知何故,我不认为这将是Azure的具体问题。你能看到日志等任何错误吗?在你运行它之前,也请尝试回显查询,并检查你是否直接在你的phpmyadmin等上运行它,看看它是否可以工作。 – Ekin

2

试试这个,因为你的主键值是自动递增。

$q = "INSERT INTO project VALUES('$company_name','$description','$image','$image_type','$welcome_text','$thanks_message')"; 
+0

格罗什我现在试过了,但没有奏效。我也尝试删除查询,只有一个回显将打印填充的项目名称,以查看代码是否收集它,并将其打印出来。所以填充的值会被检索,但不能被执行并通过查询发送。 – Max

+0

在你的代码中你打开了一个到MySQL服务器的连接? –

+0

我已经包含打开到服务器的连接的文件。有没有探头。 – Max

相关问题