PHP代码报unexpected ';'语法错误?第18行bind_param处异常求助
解决PHP语法错误:unexpected ';'
你遇到的unexpected ';'错误,看起来报错在第18行,但实际根源在上一行的if语句里——你少写了一个闭合的右括号!
看你这段代码的第一行:
if($stmt = $conn->prepare('INSERT INTO facturas (id_factura, id_depositante, beneficiario, endereço, cell, descriçao, montante) VALUES (?, ?, ?, ?, ?, ?, ?)'){
这里的if条件部分,$conn->prepare(...)后面只写了一个左括号(,却没有对应的右括号)来闭合整个if的判断条件。编译器读到后面的{和第18行的代码时,完全无法正确解析语法结构,所以才会在第18行抛出错误提示——这是典型的“错误提示位置滞后于实际错误位置”的情况。
修正后的代码如下:
if($stmt = $conn->prepare('INSERT INTO facturas (id_factura, id_depositante, beneficiario, endereço, cell, descriçao, montante) VALUES (?, ?, ?, ?, ?, ?, ?)')){ $stmt->bind_param('ssssisi', $id_factura, $nome, $_POST['beneficiario'], $_POST['endereço'], $_POST['cell'], $_POST['descriçao'], $_POST['montante']); // 现在语法正常了 $stmt->execute(); }
只需要在prepare()方法的末尾加上一个),让if的条件部分完整闭合,后续代码就能被正确解析了。
小提示:以后遇到这类语法错误,不要只盯着报错行,先检查报错行的前几行,重点看有没有括号、引号未闭合的情况,这类问题很容易导致编译器报错位置跑偏。
内容的提问来源于stack exchange,提问作者José Mauro




