如何在php中的sql脚本中连接字符串和变量?

时间:2015-10-29 18:59:04

标签: php sql

所以我有一个类似下面的脚本。我试图在这个PHP脚本中编写一个sql脚本,它将根据条件进行一些更新或插入。但是,我遇到了如何在脚本中连接我的变量的问题。 while循环不起作用,但在此之前我运行了for循环并且似乎正常工作。我在这做错了什么?

P.S。我知道很多人会抱怨sql注入,但这是我们公司内部的一个内部项目,所以一切都是安全的,在一个单独的网络和一个单独的虚拟机,这是托管和测试。

   <?php
include_once 'DbConnectPSI.php';
    global $connect;
    global $record3;
    global $emptyQ;
    global $rightOn;
    global $i;
    global $SqlArr;
    $rightOn="Thank you, your time has been inserted successfully";
    $i = 0;
    $SqlArr = $_POST['SqlArr'];

    while($i <= sizeof($SqlArr)) {
        $emptyQ = "IF Exists (Select * from EmployeeTimesheetstemp where empid= $SqlArr[$i][0]  and Day= '$SqlArr[$i][2]'  and Title='$SqlArr[$i][3]' and Description='$SqlArr[$i][4]')
        Update EmployeeTimesheetstemp Set Value=$SqlArr[$i][5] where empid=$SqlArr[$i][0] and Day='$SqlArr[$i][2]' and Title='$SqlArr[$i][3]' and Description='$SqlArr[$i][4]'
        Else Insert into EmployeeTimeSheetstemp(EmpId,WkEnd,Day,Title,Description,Value,Timestamp,Abbrevjob) Values";
        $emptyQ = $emptyQ . '('. $SqlArr[$i][0]. ', ' . "'". $SqlArr[$i][1] ."'" . ', '. "'". $SqlArr[$i][2] ."'"  .', '. "'". $SqlArr[$i][3] ."'"  .', '. "'". $SqlArr[$i][4] ."'"  .', '.  $SqlArr[$i][5]  .',' . 'getDate()' . ', '.  $SqlArr[$i][6]  .')';
        $i = $i + 1;    
    }
    $record3 = odbc_exec($connect, $emptyQ);
    //echo ($rightOn);
    echo($emptyQ);      
    odbc_close($connect);
    ?>

FOR LOOP:

 $emptyQ="Insert into EmployeeTimesheetsTemp (EmpId, WkEnd,Day,Title,Description,Value,TimeStamp,AbbrevJob) Values";

    for ($i=0;$i<sizeof($SqlArr);$i++) {
        if($i==sizeof($SqlArr)-1){

        $emptyQ=$emptyQ . '('. $SqlArr[$i][0]. ', ' . "'". $SqlArr[$i][1] ."'" . ', '. "'". $SqlArr[$i][2] ."'"  .', '. "'". $SqlArr[$i][3] ."'"  .', '. "'". $SqlArr[$i][4] ."'"  .', '.  $SqlArr[$i][5]  .',' . 'getDate()' . ', '.  $SqlArr[$i][6]  .')';
        }
        else{

        $emptyQ=$emptyQ . '('. $SqlArr[$i][0]. ', ' . "'". $SqlArr[$i][1] ."'"  .', '. "'". $SqlArr[$i][2] ."'"  . ', '. "'". $SqlArr[$i][3] ."'"  .', '. "'". $SqlArr[$i][4] ."'"  .', '.  $SqlArr[$i][5]  .',' . 'getDate()' .', '.  $SqlArr[$i][6]  .'),';
        }

     }

1 个答案:

答案 0 :(得分:1)

你正在用"引用字符串做多维数组。你需要特别注意那些:

$foo[0][1] = 'bar';
echo "$foo[0][1]"; // output: Array[1]

PHP的解析器并不贪婪,默认情况下在FIRST数组取消引用后停止,并将其他所有内容视为纯文本。您需要进行字符串连接,或使用{} - 扩展语法:

echo "" . $foo[0][1] . "";
echo "{$foo[0][1]}";

这两个都会输出bar