Avatar billede Morten Professor
12. marts 2015 - 07:55 Der er 22 kommentarer og
1 løsning

Skriv tekst til mysql fejl

Hej

Har lige et spørgsmål
hvordan for jeg en mysql fejl til at skrive noget andet.
mysql_select_db($database_hellestrik, $hellestrik);
  $Result1 = mysql_query($updateSQL, $hellestrik) or die(mysql_error());

F.eks.
Antal kan ikke være 0, skriv et antal.
Avatar billede Slater Ekspert
12. marts 2015 - 08:13 #1
Det skal du selv teste for først. MySQL kan ikke vide om Antal må være 0, du skal teste i PHP-koden først om $antal==0, og selv skrive en fejl hvis den er.
Avatar billede Morten Professor
12. marts 2015 - 08:21 #2
Det er fordi der står ikke noget tal, så ville jeg gerne have, jeg kan skrive noget når det kommer med fejlen.
Avatar billede olsensweb.dk Ekspert
12. marts 2015 - 08:57 #3
lav

$Result1 = mysql_query($updateSQL, $hellestrik) or die(mysql_error());

om til

$Result1 = mysql_query($updateSQL, $hellestrik) or die(mysql_error($hellestrik[b])); 

dvs du mangler en database connection i din mysql_error, nu du har navngivet din database connection (hellestrik).
ps, det kan du lige så godt vende dig til det [b]skal
du gøre i mysqli og PDO

men ellers ja alt test på vaaiable gøres før den kommer til sql.

nb: du skyder dig selv i foden ved forsat at anvende det gamle mysql API, anvend mysqli eller PDO mod din mysql database
ref http://php.net/mysql_connect

Warning
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information.
Avatar billede olsensweb.dk Ekspert
12. marts 2015 - 09:00 #4
nu med rigtig favning, hvor havde det været rart lige at kunne rette sit indlæg

lav

$Result1 = mysql_query($updateSQL, $hellestrik) or die(mysql_error());

om til

$Result1 = mysql_query($updateSQL, $hellestrik) or die(mysql_error($hellestrik[b])); 

dvs du mangler en database connection i din mysql_error, nu du har navngivet din database connection (hellestrik).
ps det kan du lige så godt vende dig til det [b]skal
du gøre i mysqli og PDO

men ellers ja alt test på vaaiable gøres før den kommer til sql.

nb: du skyder dig selv i foden ved forsat at anvende det gamle mysql API, anvend mysqli eller PDO mod din mysql database
ref http://php.net/mysql_connect

Warning
This extension is deprecated as of PHP 5.5.0, and will be removed in the future. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information.
Avatar billede olsensweb.dk Ekspert
12. marts 2015 - 09:03 #5
jeg harvde ikke fået kopieret den rette code over, du kan forhåbentlig e hvad jeg mener

$Result1 = mysql_query($updateSQL, $hellestrik) or die(mysql_error($hellestrik)); 
Avatar billede Morten Professor
12. marts 2015 - 10:19 #6
Løsning:
mysql_select_db($database_hellestrik, $hellestrik);
  $Result1 = mysql_query($updateSQL, $hellestrik) or die(mysql_error($hellestrik));
  $hellestrik = "<div><center><b><h1>Antal kan ikke være 0 skriv et antal.</h1></b></center></div>";
  echo $hellestrik;

Tak for hjælpen.

Kan du skrive så jeg kan give dig point ronols :o)
Avatar billede Morten Professor
12. marts 2015 - 10:23 #7
Kan jeg lave et link på siden?
<a href="'http://www.em-deko.dk'">Tilbage</a>";
Avatar billede olsensweb.dk Ekspert
12. marts 2015 - 10:52 #8
du får et svar her


>$hellestrik = "<div>......
dette vil ikke virke, du smadre din connection, og du får kun vist beskeden hvis der ikke er fejl :(

kig på http://php.net/manual/en/function.mysql-query.php eksempe 2

dette

$Result1 = mysql_query($updateSQL, $hellestrik) or die(mysql_error($hellestrik));
$hellestrik = "<div><center><b><h1>Antal kan ikke være 0 skriv et antal.</h1></b></center></div>";
echo $hellestrik;


skal skrives som (utested)

$Result1 = mysql_query($updateSQL, $hellestrik);
if (!$Result1) {
echo "<div><center><b><h1>Antal kan ikke være 0 skriv et antal.</h1></b></center></div>";
echo "<a href='http://www.em-deko.dk'>Tilbage</a>";
die(mysql_error($hellestrik));
}

hvis du vil have flere ting til at ske, hvis din query fejler
Avatar billede Morten Professor
12. marts 2015 - 11:01 #9
Jeps det virkede :o)

Tak for hjælpen.

Ja jeg må helle snart se at få lave det i mysqli.

Ved bare ikke helt hvordan jeg skal komme igang.
Nu har jeg været vand til mysql.

Med venlig hilsen
Morten Ankerstjerne Møller
Avatar billede olsensweb.dk Ekspert
12. marts 2015 - 12:05 #10
>Ja jeg må helle snart se at få lave det i mysqli.

>Ved bare ikke helt hvordan jeg skal komme igang.
>Nu har jeg været vand til mysql.

hvis du har vendet dig til at navngive din connection, er du kommet et godt stykke, så mangler du bare at tilføje et i, og lidt til

i mysqli kan man skrive i Procedural style eller OOP style.
procedural style ligner det gamle meget, så start med det, og arbejd dig hen mod at skrive det i OOP style, eller blande det hvis du har lyst.

mysql (det gamle API)

$Result1 = mysql_query($updateSQL, $hellestrik);
if (!$Result1) {
echo "<div><center><b><h1>Antal kan ikke være 0 skriv et antal.</h1></b></center></div>";
echo "<a href='http://www.em-deko.dk'>Tilbage</a>";
die(mysql_error($hellestrik));
}



mysqli (procedral style) (det forbedret mysql API)

$hellestrik = mysqli_connect("localhost", "root", "", "test_database"); // *, eks på database connection

$Result1 = mysqli_query($hellestrik, $updateSQL); // *
if (!$Result1) {
echo "<div><center><b><h1>Antal kan ikke være 0 skriv et antal.</h1></b></center></div>";
echo "<a href='http://www.em-deko.dk'>Tilbage</a>";
die(mysqli_error($hellestrik)); // *
}

* ændring, dette er da ikke så skræmmende vel :)
Avatar billede Morten Professor
12. marts 2015 - 12:42 #11
Hehe nej det var ikke så skræmmende, jeg går igang fra en ende af :o)
Tak for hjælpen så bliver jeg sikret til udvikligen :o)
Avatar billede Morten Professor
12. marts 2015 - 12:44 #12
Men hold da op hvor skal jeg igennem en del sider jeg har lavet.
www.flueopskrifter.dk www.hellestrik.dk www.syddanske.dk morticms.dk www.em-deko.dk www.odderloppetorv.dk
:oD
Avatar billede Morten Professor
12. marts 2015 - 12:46 #13
ctrl + v bliver slidt ned :o)
Avatar billede Morten Professor
12. marts 2015 - 12:54 #14
arh det er mere "i" :o)
Avatar billede Morten Professor
12. marts 2015 - 13:17 #15
Hvordan skal denne drejes?
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQLI"
# HTTP="true"
$hostname_hellestrik = "localhost";
$database_hellestrik = "";
$username_hellestrik = "";
$password_hellestrik = "";
$hellestrik = mysql_pconnect($hostname_hellestrik, $username_hellestrik, $password_hellestrik) or trigger_error(mysql_error(),E_USER_ERROR);
?>
Avatar billede olsensweb.dk Ekspert
12. marts 2015 - 14:14 #16
#15
prøv

<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQLI"
# HTTP="true"
$hostname_hellestrik = "localhost";
$database_hellestrik = "";
$username_hellestrik = "";
$password_hellestrik = "";

// http://php.net/manual/en/mysqli.error.php
$hellestrik = mysqli_connect($hostname_hellestrik, $username_hellestrik, $password_hellestrik, $database_hellestrik) or trigger_error(mysqli_connect_error(),E_USER_ERROR);
/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
?>


jeg vil nok fjerne  "or trigger_error(mysqli_connect_error(),E_USER_ERROR)"
Avatar billede Morten Professor
12. marts 2015 - 16:39 #17
Fandt en løsning men har nogle problemer med.

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


Der siger den fejl når jeg prøver at rette den til
mysqli_real_escape_string()


<?php require_once('../Connections/hellestrik.php'); ?>
<?php
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;
}
}

?>
Avatar billede olsensweb.dk Ekspert
12. marts 2015 - 17:02 #18
>$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
du mangler at angive din connection i mysqli_real_escape_string

http://php.net/manual/en/function.mysqli-escape-string.php
http://php.net/manual/en/mysqli.real-escape-string.php

du behøver ikke teste om den ene eller anden findes, da mysqli_escape_string er et alias for mysqli_real_escape_string

så dette

$theValue = function_exists("mysqli_real_escape_string") ? mysqli_real_escape_string($hellestrik,$theValue) : mysqli_escape_string($hellestrik, $theValue);


kan forkortes til

$theValue =  mysqli_real_escape_string($hellestrik,$theValue);
Avatar billede Morten Professor
12. marts 2015 - 21:35 #19
Øv det virker ikke på min side.
Så mangler der en masse information fra databasen.
Avatar billede olsensweb.dk Ekspert
13. marts 2015 - 10:48 #20
>Så mangler der en masse information fra databasen.
den mangler din database connection

har du hørt om variable scope i forbindelse med funktioner ??
alle værdier(variable) udefra, der skal anvendes i functionen, skal overføres som parameter, i nødstilfæølde kan man anvende global

alle værdier(variable) indefra der skal anvendes udenfor skal retuneres[b], evt som [b]call by value, i nødstilfælde kan man anvende global

 
IMHO er det i det hele taget er det en uskik at anvende global, da du ikke har styr på hvor du ændre din variabel


ref #17

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  if (PHP_VERSION < 6) {
  ....

 

så dit problem kan løsses på 2 måder:

løsning 1: overfør din connection som parameter (vil jeg anbefale)

function GetSQLValueString($hellestrik, $theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  if (PHP_VERSION < 6) {
  ....

her skal du ind og rette alle steder du kalder funktionen


løsning 2: anvend global

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  global $hellestrik;
  if (PHP_VERSION < 6) {
  ....

der skal ikke laves mere
Avatar billede Morten Professor
14. marts 2015 - 17:39 #21
Hej

Nu har jeg prøvet det du sagde, og det virker det eneste jeg har laver om er:
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "", $hellestrik)
{
  if (PHP_VERSION < 6) {
  ....

Mit eneste problem indtil vidre er min connect.
Den finder igen ting når jeg prøver at lave den om til mysqli.
Har også prøvet det du skrev ;o)
Men også prøvet:
<?php
$hellestrik = mysqli_connect("localhost","my_user","my_password","my_db");

// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
?>

Og det vil bare ikke :-/

Jeg er glad for du hjælper mig igang med mysqli.
Avatar billede olsensweb.dk Ekspert
14. marts 2015 - 20:13 #22
prøv dette lille eks, og tænk over om din function virker som du ønsker

<?php
function GetSQLValueString($conn, $theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") {
    if (PHP_VERSION < 6) {
        $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
    }
    $theValue = mysqli_real_escape_string($conn, $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;
}

$hellestrik = mysqli_connect("localhost", "root", "", "test");
// Check connection
if (!$hellestrik) {
    echo 'Der opstod en fejl.';
    exit();
}

// jeg vil have min connection som FØRSTE parameter, da den altid SKAL med over i functionen, da jeg anvender en sql funktion (mysqli_real_escape_string) og en connection KAN ikke have default værdi
echo GetSQLValueString($hellestrik, 42, "int");
echo "<br>";
echo GetSQLValueString($hellestrik, '42', "int");
echo "<br>";
echo GetSQLValueString($hellestrik, '"or 1=1', "text"); // http://www.w3schools.com/sql/sql_injection.asp
echo "<br>";
echo GetSQLValueString($hellestrik, '\n', "text"); // \n skal være en string, der sende over da \n giver syntax fejl
echo "<br>";
echo GetSQLValueString($hellestrik, '', "date");
echo "<br>";
echo "uden at definere en værdi :) " . GetSQLValueString($hellestrik, '', "defined");
?>
Avatar billede Morten Professor
16. marts 2015 - 07:44 #23
Hej
Jeg vil prøve, legede lidt med det i for lidt siden, men min db forbindelse fejlede.
Det er mærkeligt.
Men leger videre.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB