我是PHP和MySQL的新手,我只是想不出这个.我在论坛周围搜索过但没有找到我能理解的答案.我最初使用的是mysql_fetch_assoc(),但我只能搜索数字,并且在搜索字母时也收到了错误.我希望我在这里走在正确的轨道上.提前感谢您的帮助!
$con = mysqli_connect($hostname,$username,$password) or die ("<script language='javascript'>alert('Unable to connect to database')</script>");
mysqli_select_db($con, $dbname);
if (isset($_GET['part'])){
$partid = $_GET['part'];
$sql = 'SELECT *
FROM $usertable
WHERE PartNumber = $partid';
$result = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($result);
$partnumber = $partid;
$nsn = $row["NSN"];
$description = $row["Description"];
$quantity = $row["Quantity"];
$condition = $row["Conditio"];
}
Run Code Online (Sandbox Code Playgroud)
Sli*_*liq 24
当您的结果不是结果时(而不是"假"),会发生这种情况.你应该改变这一行
$sql = 'SELECT * FROM $usertable WHERE PartNumber = $partid';
Run Code Online (Sandbox Code Playgroud)
对此:
$sql = "SELECT * FROM $usertable WHERE PartNumber = $partid";
Run Code Online (Sandbox Code Playgroud)
因为"可以解释$变量,而'不能.
适用于整数(数字),对于需要将$变量放在单引号中的字符串,例如
$sql = "SELECT * FROM $usertable WHERE PartNumber = '$partid' ";
Run Code Online (Sandbox Code Playgroud)
如果你想/有单引号工作,那么PHP可以不interprete的变量,你将不得不做这样的:
$sql = 'SELECT * FROM '.$usertable.' WHERE string_column = "'.$string.'" AND integer_column = '.$number.';
Run Code Online (Sandbox Code Playgroud)
Arn*_*anc 15
mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given
Run Code Online (Sandbox Code Playgroud)
这意味着您传递的第一个参数是布尔值(true或false).
第一个参数是$result,false因为查询中存在语法错误.
" ... WHERE PartNumber = $partid';"
Run Code Online (Sandbox Code Playgroud)
您永远不应该在SQL查询中直接包含请求变量,否则用户可以在查询中注入SQL.(参见SQL注入.)
你应该转义变量:
" ... WHERE PartNumber = '" . mysqli_escape_string($conn,$partid) . "';"
Run Code Online (Sandbox Code Playgroud)
或者更好,使用Prepared Statements.