为什么我的变量不能设置?PHP

为什么我的变量不能设置?PHP,php,mysql,variables,post,Php,Mysql,Variables,Post,因此,$bays$wheelnumber和$lengthhours在表单中设置,并在表单发布到此处时设置。但无论我做什么,变量都不会写入数据库。我尝试过直接在代码中设置它们(即,$bays='5'),但仍然不起作用。但是当我设置':number'=>$\u POST['wheelnumber']时,它工作了!!!!当我回显变量时,也会显示,这样我就知道它们已经设置好了。有人请帮忙。这让我头疼 $bays = $_POST['bays']; $wheelnumber = $_POS

因此,$bays
$wheelnumber
$lengthhours
在表单中设置,并在表单发布到此处时设置。但无论我做什么,变量都不会写入数据库。我尝试过直接在代码中设置它们(即,
$bays='5'
),但仍然不起作用。但是当我设置
':number'=>$\u POST['wheelnumber']
时,它工作了!!!!当我回显变量时,也会显示,这样我就知道它们已经设置好了。有人请帮忙。这让我头疼

    $bays = $_POST['bays'];
    $wheelnumber = $_POST['wheels'];
    $lengthhours = $_POST['length'];     

    //create user id
    $id = rand(1000000,99999990);

        if ($bays = ""){
        $bays = "1";}

        $length = $lengthours / $bays;

        if ($wheelnumber = ""){
        $wheelnumber = "1";}

    //create wheel number
    $name = "Wheel " . $wheelnumber;

    try {
        $connect = mysql_connect("localhost","root", "toor");
        if (!$connect) {
            die(mysql_error());
        }
        //insert into database with a prepared statement
        $stmt = $db->prepare('INSERT INTO wheels (name,number,id,stackid,length,farmid) VALUES (:name, :number, :id, :stackid, :length, :farmid)');
        $stmt->execute(array(
            ':name' => $name,
            ':number' => $wheelnumber,
            ':id' => $id,
            ':stackid' => $stack1,
            ':length' => $lengthhours,
            ':farmid' => $farmid,
        ));
    while ($bays > 0) {
                $bayname = "Bay " . $bays;
                $bid = rand(1000000,99999990);
        //insert into database with a prepared statement
        $stmt = $db->prepare('INSERT INTO bays (name,id,wheelid,length,farmid) VALUES (:name, :id, :wheelid, :length, :farmid)');
        $stmt->execute(array(
            ':name' => $bayname,
            ':id' => $bid,
            ':wheelid' => $id,
            ':length' => $length,
            ':farmid' => $farmid,
        ));
        $bays = $bays - 1;
}
你的线路

$wheelnumber = $_POST['wheels'];
应该是

$wheelnumber = $_POST['wheelnumber'];

您说,
$bays
$wheelnumber
$lengthhours
是在表单中设置的,但您的代码从不同名称的变量收集数据,即

$bays = $_POST['bays'];
$wheelnumber = $_POST['wheels'];
$lengthhours = $_POST['length'];     
应该是这样吗

$bays = $_POST['bays'];
$wheelnumber = $_POST['wheelnumber'];
$lengthhours = $_POST['lengthhours'];     
如果测试是错误的,那么这些都是错误的

if ($bays = ""){
    $bays = "1";
}

$length = $lengthours / $bays;

if ($wheelnumber = ""){
    $wheelnumber = "1";
}
相等的测试是
=
,因此将其更改为

if ($bays == ""){
    $bays = "1";
}

$length = $lengthours / $bays;

if ($wheelnumber == ""){
    $wheelnumber = "1";
}
您似乎也在连接
mysql\uucode>数据库扩展,但随后尝试使用
mysqli\ucode>或
PDO
数据库扩展语法。 3个MySQL数据库扩展不能像那样互换,选择一个并坚持它

i、 e

正在使用
mysql\uu
数据库扩展,并且

$stmt = $db->prepare('INSERT INTO wheels (name,number,id,stackid,length,farmid) VALUES (:name, :number, :id, :stackid, :length, :farmid)');
正在使用
mysqli
PDO
数据库扩展

还有
$db
来自哪里


另外,您似乎已经编码了一个Try/Catch块,但我不确定您是否编码了Catch部分,代码不完整,因此这里可能我错了

您可以先将
if($bays=”“)
更改为if
(empty($bays))
if($bays==“”)
这已经得到了回答。如果您要拼凑其他地方的代码,请确保所有代码都兼容。您看起来像是在使用
mysql\ucode>数据库扩展进行连接,但他们试图使用
mysqli\ucode>或PDO数据库扩展进行查询。它们不是交叉兼容的!数据库的怪物可能的复制品是答案吗?这是个问题吗?这是评论吗?谁能说呢?嗨,艾伦,这是一个提议的解决方案——指出问题中的一行代码并建议更正。这是一个疑问。以问号结束。答案就像你的问题X是因为A,B和C而发生的。要解决,就做Y。这样,D和E就会发生,解决你的问题。是鸟吗?是飞机吗不,阿兰马查多
$stmt = $db->prepare('INSERT INTO wheels (name,number,id,stackid,length,farmid) VALUES (:name, :number, :id, :stackid, :length, :farmid)');