MySQL 报告语法错误


mysql reporting syntax error

$sql = mysql_query("SELECT * FROM prestamos LEFT JOIN libros  on  prestamos.codlibros = libros.cod_libros where id_usuariospr ={$_SESSION['idusuarios']}");
$row = mysql_num_rows($sql);
//$datos = mysql_fetch_array($sql);
while($datos = mysql_fetch_array($sql)){ 
    $tit = $datos['titulo'];
    $aut = $datos['autor'];
    $edit = $datos['editorial'];
    $isbn = $datos['isbn'];
    $color = $datos['color'];                
    $fechaP = $datos['fecha_prest'];
    $fecha = $datos['fecha_entrega'];
    $libro = $datos['codlibros'];
    $query = "INSERT INTO historial(titulo_his, autor_his, editorial_his, isbn_his, color_his, fecha_inicio_his, fecha_final_his, idusuarios_his, codlibros_his)
                                                    VALUES($tit, $aut, $edit, $isbn, $color, $fechaP, $fecha, {$_SESSION['idusuarios']}, $libro)";
    mysql_query($query) or die(mysql_error());
}

我尝试查找错误:

您的 SQL 语法有误;请检查 与您的 MySQL 服务器版本相对应的正确手册 在'del Web, Creative Commons, 123213, rojo, 2013-11-04, 2013-11-05, 127, 12)' 在 2 号线

拜托,你能帮我吗?我找不到错误。

用引号输入查询:

$query = "INSERT INTO historial(`titulo_his`, `autor_his`, `editorial_his`, `isbn_his`, `color_his`, `fecha_inicio_his`, `fecha_final_his`, `idusuarios_his`, `codlibros_his`)
                                                                VALUES('{$tit}', '{$aut}', '{$edit}', '{$isbn}', '{$color}', '{$fechaP}', '{$fecha}', '{$_SESSION['idusuarios']}', '{$libro}')";

问题是您尝试插入字符串而不将它们括在引号中,因此查询将失败

PS:并且不要使用扩展已弃用的mysql_*函数。

PS2:字段名称不需要反引号,但我喜欢它:)

不要在查询中使用 php 变量。

<?php
            $sql = mysql_query("SELECT * FROM prestamos LEFT JOIN libros  on  prestamos.codlibros = libros.cod_libros where id_usuariospr ={$_SESSION['idusuarios']}");
            $row = mysql_num_rows($sql);
if(isset($_SESSION['idusuarios']))
    $sessionvar=$_SESSION['idusuarios'];

        while($datos = mysql_fetch_array($sql)){ 
                $tit = $datos['titulo'];
                $aut = $datos['autor'];
                $edit = $datos['editorial'];
                $isbn = $datos['isbn'];
                $color = $datos['color'];                
                $fechaP = $datos['fecha_prest'];
                $fecha = $datos['fecha_entrega'];
                $libro = $datos['codlibros'];
                $query = "INSERT INTO historial(titulo_his, autor_his, editorial_his, isbn_his, color_his, fecha_inicio_his, fecha_final_his, idusuarios_his, codlibros_his)
                                                                VALUES($tit, $aut, $edit, $isbn, $color, $fechaP, $fecha, $sessionvar, $libro)";
                      mysql_query($query) or die(mysql_error());
          }                 
            ?>

同样对于字符字段,值将它们括在引号内。

您无需

在查询中的 php 变量附近添加大括号。如果一个值是字符串类型,则将其用作 - '.$phpvariable。