准备语句中的语法错误:mysql/php

3

从昨晚开始一直在尝试,但无济于事。

与此相关的是IT技术。

createOrder($website,(int)$nVotes,(int)$timeframe,$loggedInUser->email,$server,(int)$start,$referer);

对这些变量进行var_dump显示(之前):

字符串(2) "web1" 字符串(2) "10" 字符串(2) "10" 字符串(23) "myemail@gmail.com" 字符串(8) "myserver" 整数(1423063633) 字符串(17) "http://google.com"

看起来存在问题的函数是:

function createOrder($website,$votes,$timeframe,$user,$server,$start,$referer)
{
    global $mysqli,$db_table_prefix;
    $time = time();
    $stmt = $mysqli->prepare("INSERT INTO ".$db_table_prefix."orders (
        serverId,
        orderUser,
        targetUrl,
        nVotes,
        timeframe,
        referer,
        starting
        )
        VALUES (
        ?,
        ?,
        ?,
        ?,
        ?,
        ?,
        ?
        )");
    file_put_contents("error.log", $mysqli->errno . $mysqli->error );
    $stmt->bind_param("sssiisi", $server, $user, $website, $votes, $timeframe, $referer, $start);
    file_put_contents("error1.log", $stmt->errno . $stmt->error );
    $stmt->execute();
    file_put_contents("error1.log", $stmt->errno . $stmt->error );
    $stmt->close(); 

nginx.error.log指责bind_param

"PHP信息: PHP致命错误: 在funcs.php的第1223行上,对非对象调用bind_param()成员函数"

error.log归咎于语法错误

(check the manual) for the syntax to use near 'starting

  )
                VALUES (
                ?,
                ?,
                ?,
                ?,
                ?,
                ?,
                ?
                )' at line 8
1个回答

2
问题是starting是MySQL中的保留字,而您正在将其用作字段名。您应该用反引号括起来:
    serverId,
    orderUser,
    targetUrl,
    nVotes,
    timeframe,
    referer,
    `starting`

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接