查询时,auto_increment默认值为NULL的列为NULL

时间:2016-02-16 02:26:14

标签: php mysql pdo

我的表中有一个名为spon_applicant_ID的列,它看起来像这样:

enter image description here

AUTO_INCREMENT默认值正常工作:

enter image description here

但是当我尝试从数据库中提取值时,它是NULL

$conn = new PDO('mysql:host=localhost;dbname=dbname;charset=utf8', 'user', 'PW');
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = 'SELECT * FROM spon_applicants sa LEFT OUTER JOIN spon_results sr ON sa.spon_applicant_ID = sr.spon_applicant_ID WHERE sr.spon_results_ID IS NULL ';
$stmt = $conn->prepare($sql);
$stmt->execute();

if($stmt->rowCount() > 0){
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);
}

var_dump($results);

我的结果如下:

array(17) {
  [0]=>
  array(37) {
    ["spon_applicant_ID"]=>
    NULL
    ["application_date"]=>
    string(19) "2016-02-04 16:41:16"

等等。

如何使用数据库中的spon_applicant_ID字段?我对AUTO_INCREMENT的理解是否正确,因为它是mySQL等同的身份?

2 个答案:

答案 0 :(得分:0)

仅使用LEFT JOIN代替LEFT OUTER,如果没有等效值,则为空

答案 1 :(得分:0)

来自您上次的评论:

  

@devpro,你能解决这个问题吗?这是对的。谢谢。 - etm124 1小时前

您需要使用别名和列名称,因为两个表中的列名相同。

示例:

SELECT sa.spon_applicant_ID ...