mySQL语句没有在PHP变量声明中运行

时间:2014-10-04 16:31:50

标签: php mysql

在下面的代码中,我试图连接到我的数据库,从我的表中提取最大ID,然后使用rand()函数生成一个随机数。代码成功地将我连接到数据库,但是当我尝试调用最大ID时,它不会返回值。

当我尝试回显变量时,它返回SELECT MAX(id)FROM' file'。

<?php

// Connect to the database
        $dbLink = new mysqli('localhost', 'username', 'password', 'database');
        if(mysqli_connect_errno()) {
            die("MySQL connection failed: ". mysqli_connect_error()); }


    $amount = "SELECT MAX(id) FROM 'table'";
    $rannmr = rand(1, $amount);


// Close the mysql connection
    mysqli_close($dbLink);

?>

任何帮助解决这个问题都将受到赞赏。

5 个答案:

答案 0 :(得分:2)

  

当我尝试回显变量时,它返回SELECT MAX(id)FROM&#39; file&#39;。

首先,您使用错误的identifier FROM 'table'作为单引号。

如果table确实是表格的名称,请将其包含在反引号中,您的问题会显示file

$amount = "SELECT MAX(id) FROM `table`";

无论哪种方式 ,您都不能在表名周围使用引号。您似乎使用file作为表名。

因此,如果table只是一个示例而且名为file ,请简单地说,您可以这样做:

$amount = "SELECT MAX(id) FROM `file`";

$amount = "SELECT MAX(id) FROM file";

然后, 您还需要使用您未执行的mysqli_query()进行查询。

$amount = mysqli_query($dbLink,"SELECT MAX(id) FROM `file`");

或面向对象的风格:

$amount = $dbLink->query("SELECT MAX(id) FROM `file`");

if($amount){
    echo "Success!";
}else{
    die('Error : ('. $dbLink->errno .') '. $dbLink->error);
}

or die(mysqli_error($dbLink))用于mysqli_query(),表示错误。


修改

尝试以下方法。您可能需要将$row[0]rand(0,$count)修改为1,具体取决于列号。

$result = $dbLink->query("SELECT MAX(id) FROM mytable")
while ($row=$result->fetch_row()) { $count = $row[0]; }
$random = rand(0,$count);
echo $random;

答案 1 :(得分:0)

使用它:

$ amount =&#34; SELECT MAX(id)FROM table&#34 ;;

答案 2 :(得分:0)

您忘记执行MySQL查询:

$amount = $dbLink->query("SELECT MAX(id) FROM table")->fetch_assoc();
$rannmr = rand(1, $amount[0]);

答案 3 :(得分:0)

您从未执行过查询,需要更多逻辑

if ($result = mysqli_query($dbLink, "SELECT MAX(id) as amount FROM `table`")) {
    printf("Select returned %d rows.\n", mysqli_num_rows($result));
    if ($row = mysqli_fetch_assoc($result)) {
        $amount = $row['amount']; 
        $rannmr = rand(1, $amount);            
    }else{
        echo 'no row found';
    }
}
mysqli_close($dbLink);

答案 4 :(得分:0)

我似乎没有看到实际执行查询的代码行:

试试这个:使用面向对象的mysqli方法

<?php

// Connect to the database
    $dbLink = new mysqli('localhost', 'username', 'password', 'database');
    if(mysqli_connect_errno()) {
        die("MySQL connection failed: ". mysqli_connect_error()); }


$amount = "SELECT MAX(id) as max_id FROM 'table'";

// Do the actual query : 
$run_query = $dbLink->mysql->query($amount);
// Retrieve the values:
$result = $run_query->fetch_array(); 
// Do the rand function together with the retrieved value
$rannmr = rand(1, $result['max_id']);

// Now you can echo the variable:
echo $rannmr;



// Close the mysql connection
mysqli_close($dbLink);

?>

谢谢!