Php 插入带有主键的PDO

Php 插入带有主键的PDO,php,mysql,sql,pdo,Php,Mysql,Sql,Pdo,我想从客户机表中获取主id,但无法获取 这是我的源代码 if ($valid) { $pdo = Database::connect(); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "INSERT INTO client (client_name,client_owner,client_contact) values(?, ?, ?)"

我想从客户机表中获取主id,但无法获取

这是我的源代码

    if ($valid) {
        $pdo = Database::connect();
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "INSERT INTO client  (client_name,client_owner,client_contact) values(?, ?, ?)";
        $q = $pdo->prepare($sql);
        $q->execute(array($client_name,$client_owner,$client_contact));
        // for teamviewer
        $sql1 = "SELECT client_id TOP 1 FROM client ORDER BY client_id desc";
        $sql2 = "INSERT INTO teamviewer (client_id,tv1,tv2,tv3) values(?, ?, ?, ?)";
        $q1 = $pdo->prepare($sql2);
        $q1->execute(array($sql1,$teamviewerstore,$teamviewerserver,$teamviewerbackoffice));
        Database::disconnect();
        header("location: index.php");  
    }
我使用此select查询从将创建的客户端id中获取前1名

    $sql1 = "SELECT client_id TOP 1 FROM client ORDER BY client_id desc";
我想在这个查询中插入$sql1

    $sql2 = "INSERT INTO teamviewer (client_id,tv1,tv2,tv3) values(?, ?, ?, ?)";
    $q1 = $pdo->prepare($sql2);
    $q1->execute(array($sql1,$teamviewerstore,$teamviewerserver,$teamviewerbackoffice));
非常感谢您的任何建议

谢谢

试试这个

$sql1 = "SELECT client_id FROM client ORDER BY client_id desc LIMIT 1";
$clientID = $pdo -> prepare($sql1);
$clientID -> execute();
$result = $clientID -> fetch();
$id = $result['client_id'];

然后使用
$id
$sql2
作为
客户机id
列的值,从我所看到的,您不是从
$sql1
中检索结果,而是将字符串作为值插入到
$sql2
中是的,但实际上并没有执行用于获取客户机id的查询!!!!!!!我该怎么办?我建议你看起来比你没有运行的查询更简单抱歉,我只是刚接触php..我没有检查结果是否返回了什么。你可能会注意到,我使用了
prepare()
,尽管没有什么需要准备的,但别担心,这只是我的一个习惯谢谢。。但是我在$clientID->execute()行中遇到了一个错误;什么错误?根据您帖子中的评论,
TOP 1
不适用于
mysql
,请使用
LIMIT 1
而不是代替感谢先生@carl Jan它现在可以工作了。。多谢各位MUCH@Carl,您正在准备
$sql1
语句,因此它正在准备一些东西