【发布时间】:2016-07-01 19:24:01
【问题描述】:
我在应该工作 PHP PDO 命令的函数中发送变量,该变量实际上存在(我检查它)但是在 PDO 中,我得到错误。
函数如下:
public static function addMenu( $name ){
$db = ConnectDB();
var_dump($name); echo '<br />';
$sql = "INSERT INTO " . self::getTableName() . " name VALUES :nameMenu";
$stmt = $db->prepare ( $sql );
$stmt->bindParam(':nameMenu', $name, PDO::PARAM_STR);
$stmt->execute();
}
这里是我得到的错误:
string(4) "rher"
致命错误:未捕获的异常“PDOException” 带有消息'SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 在第 1 行的 'name VALUES 'rher'' 附近 C:\xampp\htdocs\sea\public_html\admin\backend\DB\tables\TypePlacesTable.php:30 堆栈跟踪: C:\xampp\htdocs\sea\public_html\admin\backend\DB\tables\TypePlacesTable.php(30): PDOStatement->执行() C:\xampp\htdocs\sea\public_html\admin\backend\index.php(18): TypePlacesTable::addMenu('rher') {main} 抛出 C:\xampp\htdocs\sea\public_html\admin\backend\DB\tables\TypePlacesTable.php 上线30
【问题讨论】:
-
不确定它是否需要,但尝试将
()放在列名周围,()放在命名参数周围可能是必要的。例如$sql = "INSERT INTO " . self::getTableName() . " (`name`) VALUES (:nameMenu)";之前没试过没有 () -
同样,每当调试与 sql 有关的错误时,您应该
echo $sql并将其直接粘贴到数据库中以查看是否存在任何问题。供将来参考:)