簡體   English   中英

PHP的MySQL查詢連字符

[英]php mysql query with hyphen character

我有連字符查詢的問題。

$user = "test-user";
$q = @mysql_query("SELECT id FROM table WHERE user='$user'");
echo mysql_error(); //no error message

測試用戶記錄在表中,但查詢結果為空。 另外mysql錯誤消息為空。 怎么了?


編輯:謝謝你的答案。 我向大家道歉。 我發現了問題,現在發現問題不在查詢中。 問題來自正則表達式。

if (preg_match("/^[a-z0-9]+$/i", $user)) //dash character not in regex
{
$q = @mysql_query("SELECT id FROM table WHERE user='$user'");
}

我已糾正問題,如下所示:

if (preg_match("/^[a-z0-9\-]+$/i", $user)) //added \- to regex for dash
{
$q = @mysql_query("SELECT id FROM table WHERE user='$user'");
}

只需使用mysql_real_escape_string轉義數據字符串即可。

$user = "test-user";
$user = mysql_real_escape_string($user);
$q = @mysql_query("SELECT id FROM table WHERE user='$user'");
echo mysql_error(); //no error message

但我也建議您使用or die()語法,而不要使用已有的@mysql_query

$user = "test-user";
$user = mysql_real_escape_string($user);
$q = mysql_query("SELECT id FROM table WHERE user='$user'") or die ("Error: " . mysql_error());

如果您將查詢更改為:

$q = mysql_query("SELECT id FROM table WHERE user='".$user."'");

除非我周日過得很慢,否則我認為您正在搜索文字字符串$user而不是variable value

嘗試這個:

$user = "test-user";
$q = mysql_query("SELECT id FROM `table` WHERE user='".$user."'")
    or die(mysql_error());//no error message; 

mysqli_的完整示例:

    $host = "";
    $user = "";
    $password = "";
    $database = "";   

    $user_name_query = "test-user"; // If this value is from a form please read more about sql-injection. 

    // open connection to database
    $link = mysqli_connect($host, $user, $password, $database);
        IF (!$link){
            echo ("Unable to connect to database!");
        }
        ELSE {
           // SELECT QUERY
           $query = "SELECT id FROM `table` WHERE user='".$user_name_query."'";
         mysqli_query($link,$query)  or die("Query failed");

        }
// close connection to database
        mysqli_close($link);
       $p = mysql_query("SELECT id FROM table WHERE user='$user'");
        if (!$p) 
        {
            die('Could not query:' . mysql_error());
        }
        else
        {
            echo mysql_result($p>0);
        }

試試吧

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM