【问题标题】:mysql reporting syntax errormysql报语法错误
【发布时间】:2013-11-17 08:40:39
【问题描述】:
$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 行

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

【问题讨论】:

  • "$_SESSION['idusuarios']" 包含什么?
  • 我认为您的会话包含一个数组。
  • 它是${SESSION['idusuarios']}${ 前面开始,而不是在里面。
  • 这部分包含用户的id,对不起我的语言,idusuarios = idusers

标签: php mysql sql


【解决方案1】:

用引号将您的查询:

$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:字段名称的反引号不是必需的,但我喜欢它:)

【讨论】:

  • 感谢您的回答,关于 $query 中的值也可以!
【解决方案2】:

不要在查询中使用 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());
          }                 

            ?>

对于字符字段值,也将它们用引号括起来。

【讨论】:

    【解决方案3】:

    您不需要在查询中的 php 变量附近添加花括号。 另一件事是,如果值是字符串类型,则将其用作--'.$phpvariable.'

    【讨论】:

    • 感谢您的建议,是的,我会记住的!
    猜你喜欢
    • 2021-12-20
    • 2010-12-04
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多