php - 为什么我的查询找到的是数字字段条目,而不是数字/字母组合

标签 php mysql

这里是新手。当 $color 引用“style”字段中的数字条目时,以下函数可以正常工作,例如“5000”。但如果条目是“5000B”或全是字母,则找不到它。这是索引问题吗?

    function get_shirt_colors_by_style($color)
    {
db_connect();

    $query = "SELECT style,sanmar_mainframe_color,unique_key,color_square_image 
              FROM sanmar_products WHERE style=$color 
              GROUP BY style ORDER BY style";

    $result = mysql_query($query);
    $data = mysql_fetch_array($result);

    return $data;
    }

最佳答案

由于字符串未加引号,因此无法找到字母数字组合:

$query = "SELECT style,sanmar_mainframe_color,unique_key,color_square_image FROM sanmar_products WHERE style='$color' GROUP BY style ORDER BY style";
//-----------------------------------------------------------------------------------------------------------^^^^^^^^^

在 MySQL 查询中数字值不需要加引号,但字符串值必须始终用单引号引起来,如 '5000B'

我们假设 $color 的值已经针对 SQL 注入(inject)进行了转义:

// Hopefully this happened already.
// If not, do it before running mysql_query()
$color = mysql_real_escape_string($color);

关于php - 为什么我的查询找到的是数字字段条目,而不是数字/字母组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8975097/

相关文章:

php - Laravel 5 将模型事件设置为模型删除时的 "clear up"数据透视表

php - 将多个表单放在同一页面上

php - 拉取在另一个表 codeigniter 中不可用的记录

mysql - 优化的数据类型+简单的数据库设计

php - 在 MySQL 和 PHP 的更新语句中使用 COALESCE 接受 "Null"值

mysql - 如何改善mysql NATURAL LANGUAGE MODE的搜索查询?

php、mysql数据转换

php - 从 CodeIgniter 更新 MySQL 语句

php - MySQLi - 找不到用户

Mysql SELECT 里面的 UPDATE