带有连字符的php代码字段名称

时间:2016-01-20 12:15:00

标签: php

尝试编写一个php mysql连接和查询。这是一个错误"注意:使用未定义的常数购买 - 假设'购买'"尝试了没有解决的反引号。有人可以告诉我需要纠正的地方。

<?php
$host="localhost";
$port=3306;
$socket="";
$user="xxxx";
$password="xxxx";
$dbname="amazon";
$con = new mysqli($host, $user, $password, $dbname, $port, $socket)
or die ('Could not connect to the database server' .     mysqli_connect_error());

$query = "SELECT SUM(`quantity-purchased`), DATE(`purchase-date`),Tally_SKU     FROM daily_orders GROUP BY DATE(daily_orders.`purchase-date`),Tally_SKU";


if ($stmt = $con->prepare($query)) {
$stmt->execute();
$stmt->bind_result($quantity-purchased, $purchase-date, $Tally_SKU);
while ($stmt->fetch()) {
    //printf("%s, %s, %s\n", $quantity-purchased, $purchase-date,     $Tally_SKU);
}
$stmt->close();
}
//$con->close();


?>

2 个答案:

答案 0 :(得分:1)

最好的解决方案是使用适当的变量名称。它们不需要与数据库的列名相同。

if ($stmt = $con->prepare($query)) {
    $stmt->execute();
    $stmt->bind_result($quantityPurchased, $purchaseDate, $TallySKU);
    while ($stmt->fetch()) {
        printf("%s, %s, %s\n", $quantityPurchased, $purchaseDate, $TallySKU);
    }
}

但是,您可以在变量名称中使用连字符,但如果将它们用大括号括起来不推荐

if ($stmt = $con->prepare($query)) {
    $stmt->execute();
    $stmt->bind_result(${'quantity-purchased'}, ${'purchase-date'}, $Tally_SKU);
    while ($stmt->fetch()) {
        printf("%s, %s, %s\n", ${'quantity-purchased'}, ${'purchase-date'}, $Tally_SKU);
    }
}

答案 1 :(得分:0)

变量名中不允许使用连字符。

变量的一些规则:

1)变量应仅以字母(a-zA-Z)或下划线开始。

2)变量不应包含连字符。

3)变量不应包含空格。

4)变量不应包含下划线以外的任何特殊字符。

Reference