SQL sözdizimi hataları php $ _SERVER ['PHP_SELF'] echo kullanırken;

4 Cevap php

I php echo $_SERVER['PHP_SELF']; kullanarak kendi üzerine bir sayfa göndermek ama aşağıdaki hatayı almaya devam etmek çalışıyorum: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 ....

Orada farklı formlar sayfada ve ben hepsi ile aynı sorunu yaşıyorum.

Ne sorunun kaynağı olabilir?

    <?php
require_once('Connections/speedycms.php'); 
$client_id = mysql_real_escape_string($_GET['id']); 

if (!isset($_SESSION)) {
  session_start();
}
$MM_authorizedUsers = "";
$MM_donotCheckaccess = "true";

// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { 
  // For security, start by assuming the visitor is NOT authorized. 
  $isValid = False; 

  // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. 
  // Therefore, we know that a user is NOT logged in if that Session variable is blank. 
  if (!empty($UserName)) { 
    // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. 
    // Parse the strings into arrays. 
    $arrUsers = Explode(",", $strUsers); 
    $arrGroups = Explode(",", $strGroups); 
    if (in_array($UserName, $arrUsers)) { 
      $isValid = true; 
    } 
    // Or, you may restrict access to only certain users based on their username. 
    if (in_array($UserGroup, $arrGroups)) { 
      $isValid = true; 
    } 
    if (($strUsers == "") && true) { 
      $isValid = true; 
    } 
  } 
  return $isValid; 
}

$MM_restrictGoTo = "login.php";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {   
  $MM_qsChar = "?";
  $MM_referrer = $_SERVER['PHP_SELF'];
  if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
  if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0) 
  $MM_referrer .= "?" . $QUERY_STRING;
  $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
  header("Location: ". $MM_restrictGoTo); 
  exit;
}

if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_speedycms, $speedycms);
$query_caseStatus = "SELECT progress FROM tbl_accident WHERE id=$client_id";
$caseStatus = mysql_query($query_caseStatus, $speedycms) or die(mysql_error());
$row_caseStatus = mysql_fetch_assoc($caseStatus);
$totalRows_caseStatus = mysql_num_rows($caseStatus);

mysql_select_db($database_speedycms, $speedycms);
$query_retrieveSolicitor = "SELECT * FROM tbl_solicitors";
$retrieveSolicitor = mysql_query($query_retrieveSolicitor, $speedycms) or die(mysql_error());
$row_retrieveSolicitor = mysql_fetch_assoc($retrieveSolicitor);
$totalRows_retrieveSolicitor = mysql_num_rows($retrieveSolicitor);

mysql_select_db($database_speedycms, $speedycms);
$query_currentSolicitor = "SELECT currentSolicitor FROM tbl_accident WHERE id=$client_id";
$currentSolicitor = mysql_query($query_currentSolicitor, $speedycms) or die(mysql_error());
$row_currentSolicitor = mysql_fetch_assoc($currentSolicitor);
$totalRows_currentSolicitor = mysql_num_rows($currentSolicitor);
?>

4 Cevap

Eğer client_id dışarıdan alınan kullanıyorsanız, bunu kaçtı ve bir tamsayı olması gerekiyordu olsa bile, tek tırnak içine içine olmalıdır:

SELECT progress FROM tbl_accident WHERE id='$client_id'

Komut geçerse Örneğin, boş client_id, bu sorgu dönüşür:

 SELECT progress FROM tbl_accident WHERE id=

Hangi aynı hata geçersiz SQL ile sonuçlanırken:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

, Hangi kolayca herhangi bir sorgu aracı ile üretebileceği.

Senin sorunun PHP_SELF değildir. Sen oluştururken teh SQL statments biri geçerli SQL değil, bu yüzden MySQL sunucusu reddeder çünkü olsun hatayı alıyoruz.

Lütfen hatlarının her biri için arayın

mysql_query($query_someQuery, $speedycms)

Bu hatların her biri önce, böyle bir statment şey eklemek

echo $query_someQuery, "<br />","\n";
mysql_query($query_someQuery, $speedycms)

$query_someQuery kullandığınız gerçek değişkendir. Sonra script / sayfanızı yüklemek çalıştırmak ve SQL inceleyin. O bir sözdizimi hatası (bir tarayıcı aslında iade ediliyor ne görmek eğer kaynağını görüntülemek için emin olun) sahip olacaktır.

Eğer sözdizimi hatası belirledikten sonra, kodunuzu iz ve yanlış SQL üreten yüzden anlamaya.

Are you sure that the problem is when u are using "php echo $_SERVER['PHP_SELF']" ? The error thrown is an SQL Syntax error, and nothing to do with calling php echo $_SERVER['PHP_SELF'].

Aslında hata "line 1" yani gerçekten sorgu denilen yere işaret etmez, bu çizgi değil, belirli bir sayfa SQL sözdizimi, biri üzerinde aracı olarak oldukça yararsız olduğunu söylüyor.

Bu kısımdan sonra $ CLIENT_ID yankılanan deneyin:

 $client_id = mysql_real_escape_string($_GET['id']); 

Daha sonra sorgularda kullanarak konum ve onun boş veya geçersiz eğer SQL hatası üretiyor olabilir.