【问题标题】:mysql syntax errors in php, Works fine when input into phpmyadminphp中的mysql语法错误,输入phpmyadmin时工作正常
【发布时间】:2012-04-24 07:57:33
【问题描述】:

我正在尝试使用一个在 for 循环中递增的数组来查询我的数据库。出于某种原因,无论我做什么,这都行不通,

我得到了错误:

“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ')' 附近使用正确的语法”

当在 PHPMyAdmin 中查询数据库时,一切都很好,所以我假设 for 循环中的某些东西搞砸了。有什么想法吗?

我的代码:-

 <?php
$submitclick=$_GET["submitclick"];
if($submitclick==1)
{
require('json.php');
$selec=$_GET["selec"];
$selec=str_replace("'","",$selec);
error_reporting(E_ALL);
mysql_connect("localhost", "seamus", "password") or
    die("Could not connect: " . mysql_error());
mysql_select_db("seamus") or die("No such database");
$sql1 = sprintf("SELECT event FROM attends WHERE student = '%s'",$selec);
$result1 = mysql_query($sql1)
  or die(mysql_error());

while ($row1 = mysql_fetch_array($result1))
 {
  $eve[] = $row1['event'];
 }

for($f=0;$f<count($eve);$f++)
{
$sql = sprintf("SELECT event.id, teaches.staff, day, start, duration, room FROM event JOIN module ON (event.module=module.id) JOIN isin ON (event.id=isin.event) JOIN teaches ON (event.id=teaches.event) JOIN attends ON (event.id=attends.event) WHERE event.id = '%s')",$eve[$f]);
$result = mysql_query($sql)
  or die(mysql_error());  
 $i=0;

while ($row = mysql_fetch_array($result))
    {
     $key =$row['day'].$row['start'];
     $event[$key] = $row['id'];
     $room[$row['id']] = $row['room'];
     $lect[$row['id']] = $row['staff'];
   $time[$i]= $row['duration'];
   $i++;
    }
}     
   $i=0;

【问题讨论】:

    标签: php mysql sql for-loop phpmyadmin


    【解决方案1】:

    你在'%s'后面多了一个括号:

    ... WHERE event.id = '%s')",$eve[$f]);
    

    只需删除它,它应该可以工作。

    【讨论】:

    • 好发现!看了大概2个小时,一直没看懂,感觉自己像个白痴
    【解决方案2】:

    换行:

    $sql = sprintf("SELECT event.id, teaches.staff, day, start, duration, room FROM event JOIN module ON (event.module=module.id) JOIN isin ON (event.id=isin.event) JOIN teaches ON (event.id=teaches.event) JOIN attends ON (event.id=attends.event) WHERE event.id = '%s')",$eve[$f]);
    

    到:

    $sql = sprintf("SELECT event.id, teaches.staff, day, start, duration, room FROM event JOIN module ON (event.module=module.id) JOIN isin ON (event.id=isin.event) JOIN teaches ON (event.id=teaches.event) JOIN attends ON (event.id=attends.event) WHERE event.id = %d)",$eve[$f]);
    

    因为 event.id 是一个整数。

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-07
      • 2015-06-03
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 2014-07-21
      相关资源
      最近更新 更多