mysql报语法错误
Posted
技术标签:
【中文标题】mysql报语法错误【英文标题】:mysql reporting syntax error 【发布时间】: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
【参考方案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.'
【讨论】:
感谢您的建议,是的,我会记住的!以上是关于mysql报语法错误的主要内容,如果未能解决你的问题,请参考以下文章
[MySQL]--MySQL表中某个列插入数据总被截断,报编码方式的语法错误,实际是column的not null属性和更改编码语法导致的冲突。
这是sqlserver的语句,改成mysql的怎么写啊。求大神指教。报语法错误。因为我的数据库用的是mysql
mysql语法错误:Every derived table must have its own alias