【发布时间】:2012-08-13 07:42:43
【问题描述】:
我只是将我的数据库从 MS-Access 转移到 mysql
我正在使用以下代码(仅部分相关代码)从 mysql 中检索数据
$con = mysql_connect("localhost","abc","abc@123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
$conn= mysql_select_db('xyz', $con);
if (!$con) {
die ('Can\'t connect to database : ' . mysql_error());
}
$sql="SELECT * FROM Inventory where Text5='y' OR Text5='Y' ";
$rs=mysql_query($sql);
if (!$rs)
{exit("Error connecting database,,,");}
while (mysql_fetch_row($rs))
//while (!$rs->EOF)
{
$ASIN=trim(mysql_result($rs,"ASIN"));
$LocalSKU = trim(mysql_result($rs,"LocalSKU"));
//$ASIN=trim($rs->fields[120]);
if(trim($ASIN)!=""){
//include('funtions.php');
$shipArray = shipingPrice($ASIN);
$Price=round((mysql_result($rs,"Price")),2);
$Price2=round((mysql_result($rs,"Price2")),2);
但是当我运行脚本时,我收到以下错误消息
警告:mysql_result() 期望参数 2 很长,给定字符串 在 C:\wamp1\www\nathan\amazonPrice.php 第 67 行
基本上,从查询结果中,我想选择ASIN和LocalSKU字段的值做进一步处理..
有人可以建议我在这里做错了什么吗?
【问题讨论】:
-
请不要使用
mysql_*函数 - 它已被弃用并且容易受到 sql-injection 的影响。使用 PDO 或 MySQLi。 -
你的问题就在这里:mysql_result($rs,"Price")。该函数采用三个参数:记录集、行号和字段名称/编号。
-
@alfasin 你能建议我如何用 SQLi 替换这些 sql 函数吗?
-
@alfasin 说函数容易受到 SQL 注入攻击并切换到 PDO 和 mysqli 会有所帮助是错误的。 参数化语句 - 这可以保护您免受 SQL 注入。
-
没有不使用占位符的借口,2012年你最好有一个非常的好借口使用
mysql_query。如果你正在学习如何使用MySQL,请使用PDO 或mysqli。 Several examples 展示了正确执行此操作的各种方法。如果你现在学会了正确的技术,你就不必回去修复你造成的可怕的烂摊子了。
标签: php mysql sql apache phpmyadmin