根据表格输入和变量从第二个MySQL表PHP计算输入MySQL表的字段

时间:2016-10-27 16:03:03

标签: php mysql pdo

我依赖于基于两个不同表的查询/计算(由第三个表连接)。表单收集信息以输入到tbl2,tbl1通过外键链接到tbl2。我需要根据表单数据和来自tbl1的值计算并在tbl2中插入一个值。

我的查询+计算如下所示:

$res = $user->runQuery("SELECT binWeight FROM jobBins jb JOIN butchJobOpen bjo ON bjo.jobBins_binID = jb.binID JOIN butchJobClose bjc ON bjc.butchJobOpen_butchJobNum = bjo.butchJobNum WHERE bjo.butchJobNum = '$butchJobOpen_butchJobNum'");
$res->execute(); 
$row = $res->fetch(PDO::FETCH_ASSOC);
//Calculate $trimYield     
$trimYield = $row['binWeight'] / $trimWeight;

查询应该使用表单值$ butchJobOpen_butchJobNum,验证bin是否存在于连接条件中,并返回bin的权重....这可以作为独立查询正常工作,但是,我无法从我的任何结果中获得任何结果计算......我确信我只是错过了一些愚蠢的东西......但是我被困住了,所以我把它提升到了无情的SO社区,希望在投降时,有人会指责我朝着正确的方向嘲笑我明显的错误。

1 个答案:

答案 0 :(得分:1)

好的,这是你必须要做的事情

  1. 摆脱所有自酿的东西。而不是$user->runQuery使用vanilla PDO。
  2. 验证输入。查看您的变量是否包含任何有用的内容。
  3. 使用准备好的陈述正确使用PDO。
  4. 让您的代码至少提供任何结果。
  5. 要意识到上面的说明并不是一个准备就绪的解决方案 ,而只需要让你自己来调查问题。
  6. 所以

    ini_set('display_errors',1);
    error_reporting(E_ALL);
    
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    $opt = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
    $pdo = new PDO($dsn, $user, $pass, $opt);
    
    var_dump("that argle-bargle var name I can't type it:",$butchJobOpen_butchJobNum);
    
    $sql = "SELECT binWeight FROM jobBins jb 
            JOIN butchJobOpen bjo ON bjo.jobBins_binID = jb.binID 
            JOIN butchJobClose bjc ON bjc.butchJobOpen_butchJobNum =  bjo.butchJobNum 
            WHERE bjo.butchJobNum = ?";
    $res = $pdo->prepare($sql);
    $res->execute([$butchJobOpen_butchJobNum]);
    $binWeight = $res->fetchColumn();
    var_dump("bin weight:", $binWeight);
    var_dump("trim weight:", $trimWeight);
    
    $trimYield = $binWeight / $trimWeight;
    var_dump("finally", $trimYield);
    

    var_dump部分是最重要的部分,可以让您了解程序中发生了什么。比一小时盯着代码或者在SO上发出呜呜声要好10000倍。

    这里的要点是验证每个血腥变量的状态。哟看看它是否含有任何预期的东西。