簡體   English   中英

PHP PDO插入語句未通過

[英]PHP PDO insert statement not going through

我有一個正在構建的Web應用程序,用戶可以在其中創建一個新項目。

我已經處理了這兩天,我完全感到沮喪!
我有一個“新建項目”按鈕,當您單擊它時,它將調用newProject函數(並通過新項目所在文件夾的ID進行傳遞。但這無關緊要。)
這就是javascript函數的樣子。

function newProject(parentFolder) {
    //this is here because the data type stored in the database is varchar and if the value is 'none' then there the project being created will bi in no folder.
    if(parentFolder != 'none') { //convert to nonstring
        var PF = parentFolder;
    }else {
        var PF = 'none';
    }

    //create the new project
    $.post('../../php/new_project.php', { parentFolder: PF, name: 'New Project' }, function(data) {
        alert(data);
    });

}

與new_project.php文件的連接很好,所有變量都通過。

這是new_project.php文件

session_start();

    if(isset($_SESSION['username'])){
        $username = $_SESSION['username'];
        if(isset($_SESSION['name'])){
            $name = $_SESSION['name'];
        }
    }

if(isset($_POST['name'])) {

    $parentFolder = $_POST['parentFolder'];
    $name = $_POST['name'];
    $date = date('Y/m/d');
    $openId;
    for ($i=0;$i<10;++$i)
            $openId.= ($r=mt_rand(0,35))<26?chr(ord('a')+$r):chr(ord('0')+$r-26);

    $conn = new PDO('mysql:host=localhost;dbname=projects', "******", "*******");

    $sql = "INSERT INTO projects (id, ProjectName, creatorOfProject, public, lastEdited, openId, deleted, parentfolder, favorite) VALUES (:id, :ProjectName, :creatorOfProject, :public, :lastEdited, :openId, :deleted, :parentfolder, :favorite)";

    $query = $conn -> prepare($sql);
    $query -> execute(array(
        ":id"                               => '',
        ":ProjectName"          => $name,
        ":creatorOfProject" => $username,
        ":puclic"                       => '',
        ":lastEdited"               => $date,
        ":openId"                       => $openId,
        ":deleted"                  => '',
        ":parentfolder"         => $parentFolder,
        ":favorite"                 => ''
    ));

}else { 
    echo 'something went wront';
}

因為我正在警告從該文件傳遞的數據,所以它只會彈出一個空白的警告框。 也沒有javascript錯誤。

您有一個錯字,但看起來您正在傳遞不需要的空字符串:

$sql = "INSERT INTO projects (id, ProjectName, creatorOfProject, public, lastEdited, openId, deleted, parentfolder, favorite) 
        VALUES (null, :ProjectName, :creatorOfProject, null, :lastEdited, :openId, null, :parentfolder, null)";

$query = $conn -> prepare($sql);
$query -> execute(array(
    ":ProjectName"          => $name,
    ":creatorOfProject" => $username,
    //":public"                       => '',
    //    ^ Typo was there.
    ":lastEdited"               => $date,
    ":openId"                       => $openId,
    ":deleted"                  => '',
    ":parentfolder"         => $parentFolder,
    ":favorite"                 => ''
));

我從正在使用的數組/占位符中刪除了其他空字符串,並在插入語句中將它們替換為null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM