我的php代码不会将信息发送回我的mysql数据库

时间:2016-05-29 16:52:32

标签: php mysql

<?php
 $con = mysqli_connect("mysql.klasserom.net","username","password","knet-elev16912");  

$sql="INSERT INTO Registrering ( Fornavn, Etternavn, Brukernavn )
VALUES    

( '$_POST[Fornavn]','$_POST[Etternavn]','$_POST[Brukernavn]' )";
mysqli_query($sql) or die ( mysqli_error ($con));

$qsl="INSERT INTO Bilregistrering ( Bilmerke, MerkeModell, Farge, ÅrsModell, Registrasjonsnummer )
VALUES
( '$_POST[Bilmerke]','$_POST[MerkeModell]','$_POST[Farge]','$_POST[ÅrsModell]','$_POST[Registrasjonsnummer]' )";
mysqli_query($qsl) or die ( mysqli_error ($con));

mysqli_close($con);
?>

我试图将信息从我的网站发送到我的数据库。它没有用,所以我来这里寻求帮助。

我对此非常陌生,非常感谢任何帮助! :^)

3 个答案:

答案 0 :(得分:3)

我已经有20分钟等待橄榄球打开了,所以让我们来看看我们可以改进的东西,Fred-ii,随时纠正我可能任性的错误:-D,但我不能帮助看到评论中回答的问题!

 foreach ($_POST $key=>$value){
     $save[$key] = htmlspecialchars($value);
 }

很多人会告诉你使用Mysqli_real_escape_string这也是非常好的(除了一些边缘情况)。

然后使用$save中的值到MySQLi过程字符串中,但正如其他人所说,你可以 将它们连接到字符串或包住them in curly brackets;使用前者:

$sql="INSERT INTO Registrering ( Fornavn, Etternavn, Brukernavn )
VALUES ('".$save['Fornavn']."','".$save['Etternavn']."','".$save['Brukernavn']."' )";

使用后者:

$sql="INSERT INTO Registrering ( Fornavn, Etternavn, Brukernavn )
VALUES ('{$save['Fornavn]'}','{$save['Etternavn']}','{$save['Brukernavn']}' )";

要使用花括号,该字符串必须用双引号包装

另请read this SO Q&A了解为何使用预备陈述。

  • MySQLi使用CONNECTION变量和QUERY变量,您没有使用在页面顶部设置的连接var,因此导致错误并且代码中的静默失败:

将您的查询重写为:

 mysqli_query($con, $sql) or die ( mysqli_error ($con));

<强> P.S

阅读this Q&A will save you a HUGE amount时间和精力。使用PHP错误日志记录。做吧。

答案 1 :(得分:1)

问题是您在{s}查询中将string数据作为'$_POST[Fornavn]'mysqli_query() - 这是一个字符串)传递。您的$link功能也不具有mysqli_connect() mysqli_connect($link, $query)参数。应该是$stmt = $conn->prepare("INSERT INTO users (name) VALUES (?)"); $stmt->bind_param("s", $name); $name = "John"; $stmt->execute();

MySQLi示例:

   override func viewDidLoad() {
        super.viewDidLoad()

        let fileItem = self.extensionContext!.inputItems.first as! NSExtensionItem

        let textItemProvider = fileItem.attachments!.first as! NSItemProvider

        let identifier = kUTTypePDF as String

        if textItemProvider.hasItemConformingToTypeIdentifier(identifier) {

            textItemProvider.loadItemForTypeIdentifier(identifier, options: nil, completionHandler: handleCompletion)
        }
    }

    func handleCompletion(pdfFile: NSSecureCoding?, error: NSError!) {

        print("PDF loaded - What to do now?")
    }

修复代码的其他部分,它应该可以正常工作。

答案 2 :(得分:1)

你这样做的方式,你对sql注入是开放的。这是我的解决方案,更安全。假设你知道如何消毒输入。

    $name=$_POST['name'];
$dbuname='databasename';
$dbpass='databasepassword';
try{
  $conn=new PDO('mysql:host=www.yourHost.com;dbname=DatabaseName',$dbuname,$dbpass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
 catch(PDOException $e) {
echo'Error:'.$e->getMessage();
}
    try{    
        $sql=$conn->prepare("INSERT INTO `table`(name) VALUES (:na)");//prepare the query
        $sql->execute(array(":na"=>$name));//executing the query
    }
    catch(PDOException $e){
    echo 'Error:'.$e->getMessage(); //use it for getting the error
    }

你应该真正描述你得到的错误,以便我们能够提供更好的答案。