PHP用1个变量将新行插入数据库,其他所有变量默认


PHP to INSERT new Row to DB with 1 variable and all others default?

我有一个大约有10列的DB。我希望能够有一个表单来输入第一列的变量,并对其余部分使用预定义的默认值。

这是我在locationbuilder.php上的当前表单:

<form method="post" action="builder.php" id="locationbuld">
    Location Name <input type="text" name="locationname"/><br/>
    <input type="submit"/>
</form>

builder.php

$propertyname = $_POST['locationname'];
$loadCP = $conn->query("INSERT INTO properties (propertyName) VALUES ('$propertyname')");
header("Location: locationbuilder.php");

当我运行表单时,它会很好地通过并重定向回,但不会插入新行。我假设这是因为我有大约9个未确定的列,但我不能100%确定如何补救。

谢谢!


此外,如果有帮助的话,这里是我使用的创建表,这样你就可以看到数据/列:

$cp = "CREATE TABLE properties (
    id INT(3) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    propertyName VARCHAR(40) NOT NULL,
    location VARCHAR(15) DEFAULT 'South Side',
    propertyType VARCHAR(8) DEFAULT 'Business',
    businessType VARCHAR(20) DEFAULT 'None',
    ownerName VARCHAR(30) DEFAULT 'None',
    gangHQFor VARCHAR(30) DEFAULT 'None',
    drugFront VARCHAR(3) DEFAULT 'No',
    productionType VARCHAR(10) DEFAULT 'None',
    productionQuantity INT(4) DEFAULT '0',
    weeklyCost INT(15) DEFAULT '0',
    dailyIncome INT(15) DEFAULT '0',
    available VARCHAR(3) DEFAULT 'Yes',
    confiscated VARCHAR(3) DEFAULT 'No',
    confiscatedTime VARCHAR(20) DEFAULT '0'
)";
$conn->query($cp);

我不知道你是如何创建连接对象$conn的。所以我给了这个代码,试试这个并告诉:-

你的桌子一定是这样的:-

TABLE properties(some default values are changed) =
    id INT(3) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    propertyName VARCHAR(40) NOT NULL,
    location VARCHAR(15) DEFAULT 'South Side',
    propertyType VARCHAR(8) DEFAULT 'Business',
    businessType VARCHAR(20) DEFAULT 'None',
    ownerName VARCHAR(30) DEFAULT 'NULL',
    gangHQFor VARCHAR(30) DEFAULT 'NULL',
    drugFront VARCHAR(3) DEFAULT 'No',
    productionType VARCHAR(10) DEFAULT 'NULL',
    productionQuantity INT(4) DEFAULT '0',
    weeklyCost INT(15) DEFAULT '0',
    dailyIncome INT(15) DEFAULT '0',
    available VARCHAR(3) DEFAULT 'Yes',
    confiscated VARCHAR(3) DEFAULT 'No',
    confiscatedTime VARCHAR(20) DEFAULT '0'

代码:-

<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
$conn = mysqli_connect('host name','user name','password','database name') or die(mysqli_connect_error());
$propertyname = mysqli_real_escape_string($conn,$_POST['locationname']);
$loadCP = mysqli_query($conn,"INSERT INTO properties (propertyName) VALUES ('$propertyname')") or die(mysqli_error($conn));
if($loadCP){
header("Location: locationbuilder.php");    
}else{
    echo "some error occur.Please try again";
}
?>

注意:-相应地更改凭据值和其他变量值。感谢

builder.php

<?php
$propertyname = $_POST['locationname'];
$loadCP = $conn->query("INSERT INTO properties (propertyName) VALUES ('$propertyname')");
header("Location: locationbuilder.php");
?>

由于我们没有您的完整应用程序的副本,因此有很多事情可能会出错,但这些将有助于

  1. 检查您的连接字符串,您使用的是mysql抽象类吗
  2. 使用调试器来记录错误,尽管运行脚本并不意味着它没有生成错误。根据您的错误设置,它可能以静默方式失败。Firephp可能是一个易于学习的PHP调试工具