Beim Versuch, diese Website zu werfen, habe ich ein Problem beim Schreiben einer Funktion, um Moderatoren zu ermöglichen, Produkte hinzuzufügen. Ich habe den Code und die Fehlermeldungen, die ich erhalte, angehängt.
FUNKTION (von Produkt-model.php):
PHP-Variablen undefiniert, wenn an SQL-Anweisung übergeben
function insPro(){
// Create a connection object using the acme connection function
$db = acmeConnect();
// The SQL statement
$sql = 'INSERT INTO inventory (invName, invDescription, invImage, invThumbnail, invPrice, invStock, invSize, invWeight, invLocation, categoryId, invVendor, invStyle)
VALUES (:invName, :invDescription, :invImage, :invThumbnail, :invPrice, :invStock, :invSize, :invWeight, :invLocation, :categoryId, :invVendor, :invStyle)';
// Create the prepared statement using the acme connection
$stmt = $db->prepare($sql);
$stmt->bindValue(':invName', $invName, PDO::PARAM_STR);
$stmt->bindValue(':invDescription', $invDescription, PDO::PARAM_STR);
$stmt->bindValue(':invImage', $invImage, PDO::PARAM_STR);
$stmt->bindValue(':invThumbnail', $invThumbnail, PDO::PARAM_STR);
$stmt->bindValue(':invPrice', $invPrice, PDO::PARAM_STR);
$stmt->bindValue(':invStock', $invStock, PDO::PARAM_STR);
$stmt->bindValue(':invSize', $invSize, PDO::PARAM_STR);
$stmt->bindValue(':invWeight', $invWeight, PDO::PARAM_STR);
$stmt->bindValue(':invLocation', $invLocation, PDO::PARAM_STR);
$stmt->bindValue(':categoryId', $categoryId, PDO::PARAM_STR);
$stmt->bindValue(':invVendor', $invVendor, PDO::PARAM_STR);
$stmt->bindValue(':invStyle', $invStyle, PDO::PARAM_STR);
// Insert the data
$stmt->execute();
// Ask how many rows changed as a result of our insert
$rowsChanged = $stmt->rowCount();
// Close the database interaction
$stmt->closeCursor();
// Return the indication of success (rows changed)
return $rowsChanged;
Fehlermeldungen:
Notice: Undefined variable: invName in C:\CIT336\htdocs\acme\model\product-model.php on line 37
Notice: Undefined variable: invDescription in C:\CIT336\htdocs\acme\model\product-model.php on line 38
Notice: Undefined variable: invImage in C:\CIT336\htdocs\acme\model\product-model.php on line 39
Notice: Undefined variable: invThumbnail in C:\CIT336\htdocs\acme\model\product-model.php on line 40
Notice: Undefined variable: invPrice in C:\CIT336\htdocs\acme\model\product-model.php on line 41
Notice: Undefined variable: invStock in C:\CIT336\htdocs\acme\model\product-model.php on line 42
Notice: Undefined variable: invSize in C:\CIT336\htdocs\acme\model\product-model.php on line 43
Notice: Undefined variable: invWeight in C:\CIT336\htdocs\acme\model\product-model.php on line 44
Notice: Undefined variable: invLocation in C:\CIT336\htdocs\acme\model\product-model.php on line 45
Notice: Undefined variable: categoryId in C:\CIT336\htdocs\acme\model\product-model.php on line 46
Notice: Undefined variable: invVendor in C:\CIT336\htdocs\acme\model\product-model.php on line 47
Notice: Undefined variable: invStyle in C:\CIT336\htdocs\acme\model\product-model.php on line 48
Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'invName' cannot be null in C:\CIT336\htdocs\acme\model\product-model.php:50 Stack trace: #0 C:\CIT336\htdocs\acme\model\product-model.php(50): PDOStatement->execute() #1 C:\CIT336\htdocs\acme\products\index.php(158): insPro('Baseball', 'A round ball wi...', 'no-image.png', 'no-image.png', '5', '24', '6', '6', 'San Jose', '15', 'Diamond', 'Nylon') #2 {main} thrown in C:\CIT336\htdocs\acme\model\product-model.php on line 50
Ich weiß nicht, warum die Variablen nicht definiert wäre, weil ich ähnliche Funktionen mit der gleichen Syntax in der gleichen Datei verwende, die gut funktionieren.
Was mache ich falsch im Code?
Funktionen sind bereichsspezifisch. – chris85
@ chris85 Ich verstehe, aber die Funktionen sind innerhalb des Gültigkeitsbereichs –
Die Variablen innerhalb der Funktion sind nicht. '$ invName' ist niemals in' insPro' usw. definiert. – chris85