PHP Exec不工作,但命令本身工作正常

时间:2016-12-27 05:06:28

标签: php mysql sybase

我试图将一些数据插入到两个独立的数据库平台中,第一个是mySql,另一个是SQLAnywhere 11.对于mysql,我使用php mysql_query方法插入数据库,对于SQLAnywhere 11 i' m使用dbisql命令和php exec()函数。命令本身在cmd.exe中正常工作,但是当我用php尝试它时它不起作用。

以下是试用代码:

   <?php 

    $cid = rand(0, 100);

    $first_name = "Test";

    $last_name = "Test 2";



    $connect = mysql_connect("localhost", "root", "");

    if ($connect) {

        mysql_select_db("db_person");

        $query = mysql_query("INSERT INTO table_person (cid, first_name, last_name) VALUES ($cid, '$first_name', '$last_name')") or die(mysql_error());

        $query2 = "INSERT INTO table_person (cid, first_name, last_name) VALUES ($cid, '$first_name', '$last_name')";

        $cmd = 'C:/"Program Files"/"SQL Anywhere 11"/Bin32/dbisql.exe -d1 '.strtolower($query2).' -c "UID=dba;PWD=axia1234;DSN=Payroll11"';

        $output = NULL;



        $exec = exec($cmd, $output);

        var_dump($output);

    } else {

        echo "Fail";

    }

?>

尝试运行此脚本几次,它始终有效。

示例:

C:/"Program Files"/"SQL Anywhere 11"/Bin32/dbisql.exe -d1 insert into table_person (cid, first_name, last_name) values (70, 'test', 'test 2') -c "UID=dba;PWD=axia1234;DSN=Payroll11"

任何帮助将不胜感激。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

“它不起作用”是什么意思? 它是空记还是什么?

根据exec quickref

您可以传入指针以获取命令的输出和状态。

 $exec = exec($cmd, $output, $pointer);
 if(!pointer){
   echo "success exec\n"; 
 }
 else{
 echo "failed exec \n";     
 } 

答案 1 :(得分:0)

由于您将查询直接汇总到命令,输出将如下所示:

C:/"Program Files"/"SQL Anywhere 11"/Bin32/dbisql.exe -d1 insert into table_person (cid, first_name, last_name) values (70, 'test', 'test 2') -c "UID=dba;PWD=axia1234;DSN=Payroll11"

在命令提示符下这将是一个错误,因为:

insert into table_person (cid, first_name, last_name) values (70, 'test', 'test 2')

有空格和特殊字符

尝试使用"insert into table_person (cid, first_name, last_name) values (70, 'test', 'test 2')"

所以你的命令将是:

$cmd = 'C:/"Program Files"/"SQL Anywhere 11"/Bin32/dbisql.exe -d1 "'.strtolower($query2).'" -c "UID=dba;PWD=axia1234;DSN=Payroll11"';