2016-05-23 4 views
2

Я пытаюсь вставить строку в таблицу mysql, используя приведенный ниже подготовленный оператор php, но код всегда передает инструкцию и переходит в эхо «не удалось». что отсутствует в приведенном ниже коде?Вставка MYSQL с использованием подготовленного PHP Statement

(Моя база данных имеет дополнительные столбцы, но я не добавлял его, как я не хочу, чтобы вставить значения внутри (один из этих столбцов являются автоматическое приращение))

<?php 
    $ActivityDate = $_POST["ActivitytDate"]; 
    $CoreSite = $_POST["CoreSite"]; 
    $ActionAuditor = $_POST["ActionAuditor"]; 
    $DCOSPOC = $_POST["DCOSPOC"]; 

    if($stmt = $mysqli->prepare("Insert INTO DCO_Database (ActivityDate, CoreSite, ActionAuditor, DCOSPOC) Where (ActivityDate=? AND CoreSite=? AND ActionAuditor=? AND DCOSPOC=?)")) 
    { 
     $stmt->bind_param("ssss", $ActivityDate, $CoreSite, $ActionAuditor, $DCOSPOC); 
     $stmt->execute(); 
     $stmt->close(); 
    } 
    else{ 
     echo ("Failed"); 
     $mysqli->close();  
    } 
?> 

Я editied код для использовать значения вместо этого, он не вторя Failed, но вторя успех .. но все же не добавляя значения в базу данных

<?php 
$ActivityDate = $_POST["ActivitytDate"]; 
$CoreSite = $_POST["CoreSite"]; 
$ActionAuditor = $_POST["ActionAuditor"]; 
$DCOSPOC = $_POST["DCOSPOC"]; 
$AreaOwner = $_POST["AreaOwner"]; 
$ActionImplementer = $_POST["ActionImplementer"]; 
$ActionOwner = $_POST["ActionOwner"]; 
$MailSubject = $_POST["MailSubject"]; 
$ActionType = $_POST["ActionType"]; 
$RequestType = $_POST["RequestType"]; 
$RequestNumber = $_POST["RequestNumber"]; 
$OpenTime = $_POST["OpenTime"]; 
$CloseTime = $_POST["CloseTime"]; 
$ActionResult = $_POST["ActionResult"]; 
$Violation = $_POST["Violation"]; 
$ActionDetails = $_POST["ActionDetails"]; 
$Snags = $_POST["Snags"]; 
$SnagDesc = $_POST["SnagDesc"]; 
$Layout = $_POST["Layout"]; 
$LayoutDesc = $_POST["LayoutDesc"]; 
$CabinetLocation = $_POST["CabinetLocation"]; 
$Mapping = $_POST["Mapping"]; 
$MappingDesc = $_POST["MappingDesc"]; 
$Notes = $_POST["Notes"]; 

if($stmt = $mysqli->prepare("Insert INTO DCO_Database (ActivityDate, CoreSite, ActionAuditor, DCOSPOC, AreaOwner, ActionImplementer, ActionOwner, MailSubject, ActionType, RequestType, RequestNumber, OpenTime, CloseTime, ActionResult, Violation, ActionDetails, Snags, SnagDesc, Layout, LayoutDesc, CabinetLocation, Mapping, MappingDesc, Notes) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)")) 
{ 
$stmt->bind_param("ssssssssssssssssssssssss", $ActivityDate, $CoreSite, $ActionAuditor, $DCOSPOC, $AreaOwner, $ActionImplementer, $ActionOwner, $MailSubject, $ActionType, $RequestType, $RequestNumber, $OpenTime, $CloseTime, $ActionResult, $Violation, $ActionDetails, $Snags, $SnagDesc, $Layout, $LayoutDesc, $CabinetLocation, $Mapping, $MappingDesc, $Notes); 
$stmt->execute(); 
$stmt->close(); 
} 
else{ 
echo ("Failed"); 
$mysqli->close();  
} 
echo ("Successful"); 
?> 
+3

Вы не можете использовать, где положение в INSERT запроса. Я думаю, вы ищете ОБНОВЛЕНИЕ! – Saty

+0

Кажется, что метод '' prepare'' объекта класса '' mysqli'' (который, кстати, нигде не указан в вашем коде) возвращает значение фальшивости. Возможно, вам захочется вернуться к этой части или вставить код из класса, который обрабатывает материал базы данных. – designcise

+0

Запрос на вставку должен выглядеть так: 'INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);' – Matheno

ответ

3

// думает, что вы должны сделать следующее, вставка оператор позволяет только в тех случаях, когда пункт используется оператор выбора,

<?php 
$ActivityDate = $_POST["ActivitytDate"]; 
$CoreSite = $_POST["CoreSite"]; 
$ActionAuditor = $_POST["ActionAuditor"]; 
$DCOSPOC = $_POST["DCOSPOC"]; 

if($stmt = $mysqli->prepare("Insert INTO DCO_Database (ActivityDate, CoreSite, ActionAuditor, DCOSPOC) values (?,?,?,?)"); 
{ 
$stmt->bind_param("ssss", $ActivityDate, $CoreSite, $ActionAuditor, $DCOSPOC); 
$stmt->execute(); 
$stmt->close(); 
} 
else{ 
echo ("Failed"); 
$mysqli->close();  
} 
?> 
+0

Я обновил код и обновил сообщение со значениями, но все еще не работал, проверьте редактирование, если возможно –

+0

Решено. Я написал дополнительную команду fetch, вызвавшую проблему –

2

Вы должны использовать

в вашем запросе. и удалить

И

из запроса тоже. Проверьте следующий код.

if($stmt = $mysqli->prepare("Insert INTO DCO_Database (ActivityDate, CoreSite, ActionAuditor, DCOSPOC) values (?,?,?,?)")) 
{ 
$stmt->bind_param("ssss", $ActivityDate, $CoreSite, $ActionAuditor, $DCOSPOC); 
$stmt->execute(); 
$stmt->close(); 
} 
else{ 
echo ("Failed"); 
$mysqli->close();  
} 

Обратите внимание: где используется для обновления. поэтому для вставки используйте запрос следующим образом:

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

Это недопустимый запрос. – Matheno

+0

Вы когда-нибудь использовали 'AND' в запросе Insert до ??? – Saty

+0

Как этот запрос работает 'ActivityDate =? ....' – Saty

2

использования значения InstEd из где

<?php 
$ActivityDate = $_POST["ActivitytDate"]; 
$CoreSite = $_POST["CoreSite"]; 
$ActionAuditor = $_POST["ActionAuditor"]; 
    $DCOSPOC = $_POST["DCOSPOC"]; 

    if($stmt = $mysqli->prepare("Insert INTO DCO_Database (ActivityDate, CoreSite, ActionAuditor, DCOSPOC) values(?,?,?,?)")) 
    { 

$stmt->bind_param("ssss", $ActivityDate, $CoreSite, $ActionAuditor, $DCOSPOC); 
$stmt->execute(); 
$stmt->close(); 

} 
else{ 
    echo ("Failed"); 
    $mysqli->close();  
} 

?>