[英]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.